4

gdb手册中有这部分:

如果别的

此命令允许在脚本中包含有条件执行的命令。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执行这种操作:如何访问.gdbinit内部和gdb本身内部的环境变量?

如果没有办法使用“纯”gdb 命令来实现这一点,我想这个问题应该作为副本关闭。

4

1 回答 1

2

如何做到这一点?

如果您有带有嵌入式 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) 
于 2017-09-16T02:55:31.100 回答