我有一个应用程序需要使用GDB / MI来获取有关进程的信息。现在我在main中设置断点并运行该过程。通过使用"信息本地人"我可以在当前帧中得到一个整齐的局部变量列表。虽然这很好,但我需要能够看到全局变量是什么。
有没有办法做到这一点并不太痛苦?我可以使用" info variables"并获取所有变量的列表,这些变量过于广泛并且可能会损害我的应用程序的性能。有没有更简单的方法来获取全局变量列表?
编辑:补充说我想要使用GDB / MI。
答案 0 :(得分:1)
根据GDB docs,info 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 ' __'