【问题标题】:How to set up gdb watchpoints in a program consisting of many files in C++?如何在由 C++ 中的许多文件组成的程序中设置 gdb 观察点?
【发布时间】:2011-01-12 21:55:02
【问题描述】:

我正在尝试设置一个观察点来监视由许多 C++ 文件组成的包中的变量。

有很多文件

abc.cpp qwe.cpp .. xyz.cpp等

我想在文件 abc.cpp 中的某个函数 qwerty() 中监视变量“temp” 如何设置观察点?

我试过了

观看 abc.cpp::temp 观看 abc.cpp:temp 看温度

但我看到错误 No symbols 'abc.cpp::temp','abc.cpp:temp','temp' not in current context 还有一个信息观察点告诉我没有设置观察点。请注意,我可以为同一个变量成功设置断点

【问题讨论】:

    标签: c++ gdb watchpoint


    【解决方案1】:

    我总是在函数中设置断点,然后在命中的时候设置观察点,这样我就在上下文中,然后酌情删除断点。

    【讨论】:

    • 确实 - 对于局部变量,你真的必须这样做,因为观察点只是一个地址范围,所以一旦你离开定义变量的范围,观察点可能会被任何东西触发否则在堆栈上使用相同的地址范围。
    【解决方案2】:

    您要设置条件断点吗?如果那么你可以使用下面的命令。

    (gdb) 打破 abc::qwerty()
    (gdb) condition 1 temp=1 // 如果要在 temp = 1 时中断。

    【讨论】:

    • 这个问题具体说的是“观察点”,而不是“条件断点”。
    • 好吧,我尝试在函数中设置断点,我想在其中监视正在更改的变量。一旦命中,我将观察点简单地设置为 watch var_name 但由于某种原因,我没有达到观察点。我确信 var_name 是由程序写入的。 [它分配给 var_name] 我还尝试了命令 breakpoint_no > watch var_name > c > end 我安装了调试包,所以我认为符号应该不是问题。我使用的 GDB 版本是 gdb 6.8-debian 我不确定缺少的链接是什么
    猜你喜欢
    • 2011-03-29
    • 2011-11-15
    • 2023-03-12
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多