【问题标题】:How to set a breakpoint in gdb for an anonymous namespace?如何在 gdb 中为匿名命名空间设置断点?
【发布时间】:2019-08-01 10:41:32
【问题描述】:

在我的代码库中,有一些在匿名命名空间中定义的回调函数。我在 gdb 中调试,我想使用函数名在函数中设置断点。 我还尝试使用 filename : linenum 放置断点,但如果文件已经加载,这通常会起作用,否则它会说 “找不到源文件” 在未来的共享库加载时使断点挂起? (y 或 [n]) n

所以,解决方法是一旦调试器在同一个文件中,我可以使用文件名设置断点:行号

但是有没有其他方法可以在匿名命名空间内设置断点?

相关的stackoverflow问题: How to set breakpoint by function name inside anonymous namespace in Visual Studio?

但这并不能解决这里的问题。

根据stackoverflow中的一些帖子,

  1. 我尝试使用 ::function_name() 但这不起作用。
  2. 匿名命名空间::function_name()

命名空间 { int function_name(int a,int b) { 返回 a+b; } }

“没有找到源文件” /root/workspace/ProtocolInterface.cpp。 在未来的共享库加载时使断点挂起? (y 或 [n]) 是的

即使断点挂起,它也不会在提到的函数处中断。

【问题讨论】:

    标签: c++ namespaces gdb


    【解决方案1】:

    我认为匿名命名空间必须在括号中。

    (gdb) b (匿名命名空间)::function_name

    它确实对我有用,请试一试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-14
      • 2014-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多