gpt4 book ai didi

c++ - GDB中基于局部变量存在性的流量控制

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:22 26 4
gpt4 key购买 nike

我正在尝试编写一个 GDB 脚本(遗留的,而不是 Python),它将打印有关局部变量(C 或 C++ 结构)成员的信息,但前提是该局部变量存在。像这样的东西:

# 'magic' should be evaluate to "if 'info locals' has a variable named foo, then
# evaluate to true, otherwise evaluate to false.
if (magic)
print foo->member
end

我知道这有点做作,因为局部变量依赖于堆栈框架(所以我最好让它以框架为条件),但我仍然想知道这些方面是否可行.

最佳答案

首先——Python 在这种事情上要优越得多。这就是我们将它添加到 gdb 的原因!

然而,这仍然可以用旧的 gdb 来完成。然而,这很糟糕,在完成之后我想您会更加欣赏 Python 方法。您要做的是:首先,使用各种“设置日志记录”命令将输出重定向到一个临时文件。然后使用 gdb 命令打印您需要的信息,在本例中类似于“info local”。然后,使用“shell”命令shell out将临时文件重写成一个本身就是gdb脚本的文件。例如,使用“sed”检测输出中是否存在变量,然后发出“set $var_exists=1”。最后,“获取”此脚本的结果并测试设置的便利变量。

呃。但它有效。

关于c++ - GDB中基于局部变量存在性的流量控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com