c++ - 如何在 gdb 中为匿名命名空间设置断点?

标签 c++ namespaces gdb

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

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

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

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

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

根据 stackoverflow 中的一些帖子,

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

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

“找不到源文件” /root/workspace/ProtocolInterface.cpp。 在将来的共享库加载时设置断点? (y 或 [n])y

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

最佳答案

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

(gdb) b (anonymous namespace)::function_name

它对我有用,请试一试。

关于c++ - 如何在 gdb 中为匿名命名空间设置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57307202/

相关文章:

c++ - CCITT CRC 16 位起始值 0xffff

xpath - 使用Java在DOM4j中解析具有自己命名空间的子节点

PhpStorm 和 Symfony 3 - 对于某些包,找不到命名空间

c++ - 核心转储与 gdb 堆栈跟踪不同步

debugging - 在 Windows 上使用 gdb 调试时 Qt Creator 不显示局部变量

c++ - 普通数组可以放在cpu寄存器中吗?

c++ - 如何使用 Boost::Asio 访问 Web 服务?

c++ - 如何使 cv::namedWindow 成为 OpenCV2 中的焦点?

C++ 如何让一个类依赖于一个命名空间,而那个命名空间又依赖于该类?

c++ - 在 Linux 中使用 gdb 调试 Firebreath