有没有一种简单的方法可以在GDB中查看全局变量列表?

时间:2015-02-10 03:43:54

标签: gdb

我有一个应用程序需要使用GDB / MI来获取有关进程的信息。现在我在main中设置断点并运行该过程。通过使用"信息本地人"我可以在当前帧中得到一个整齐的局部变量列表。虽然这很好,但我需要能够看到全局变量是什么。

有没有办法做到这一点并不太痛苦?我可以使用" info variables"并获取所有变量的列表,这些变量过于广泛并且可能会损害我的应用程序的性能。有没有更简单的方法来获取全局变量列表?

编辑:补充说我想要使用GDB / MI。

2 个答案:

答案 0 :(得分:1)

根据GDB docsinfo variables将打印出在函数之外定义的任何变量。这将包括你的全局变量和静态变量。

如果您知道全局的名称,或者遵循特定的命名模式,您可以为GDB提供正则表达式以缩小范围。

答案 1 :(得分:1)

所以我找到了一个我想做的解决方案。

我按照这个回答here。但是,我发现当我运行答案中给出的命令时,我得到了一些不需要的垃圾(我在Mac上运行它)。我通过消除以.eh结尾的行来修复此问题,并且我注意到其他行的行以" __"开头。所以我用" __" (这是两个下划线之前的空格)。我使用以下内容来获得正确的输出:

g++ -O0 -c test.cpp && nm test.o | egrep ' [A-Z] ' | egrep -v ' [UTW] ' | egrep -v '.eh' | egrep -v ' __'