如何根据environnment
问题描述:
在gdb manual有一部分有条件在gdbinit有这一部分:如何根据environnment
如果其他
该命令允许在你的脚本有条件 执行的命令包括。 IF命令接受一个参数,这是一个 表达式计算...
我可以在我的gdbinit进行测试,当我使用数字表达式,如
if (42 == 42)
print "42"
end
但是,当我想对字符串进行测试,如:
if ("a" == "a")
print "yes"
end
然后我得到了一个错误,当我启动gdb:
.gdbinit:45: Error in sourced command file:
You can't do that without a process to debug.
我试着找不到表达式语法的文档或例子来写我的条件块。
我想实现的是添加一堆基于环境变量的命令。所以我需要在我的gdbinit中有这样的部分:
if ("${myEnvVar}" == "someSpecialValue")
#my set of special values
end
如何实现这一目标?
编辑:看起来像最简单的方法是使用Python来执行这样的操作:How to access environment variables inside .gdbinit and inside gdb itself?
如果没有办法与“纯” gdb命令来实现这一点,我想这个问题应该停课一个副本。
答
如何实现这一目标?
如果您拥有内嵌Python的GDB(最新的GDB构建),您可以随时使用Python的全部功能。
例如:
# ~/.gdbinit
source ~/.gdbinit.py
# ~/.gdbinit.py
import os
h = os.getenv("MY_ENV_VAR")
if h:
print "MY_ENV_VAR =", h
gdb.execute("set history size 100")
# Put other settings here ...
else:
print "MY_ENV_VAR is unset"
让我们来看看它的工作原理:
$ gdb -q
MY_ENV_VAR is unset
(gdb) q
$ MY_ENV_VAR=abc gdb -q
MY_ENV_VAR = abc
(gdb)
+0
是的,这是明显的方式,在这种情况下,我的问题是重复的...恕我直言,很遗憾,需要运行一个基于env变量的简单测试的Python脚本... – Guillaume
你尝试像'(STRCMP($ myVar的, “你好”)== 0' –
它产生“如果没有进程调试,你就无法做到这一点”。错误...执行这种操作需要进行python调用有点令人难过,但它同时打开了一个新的视角。 – Guillaume
是的,我 –