如何以编程方式在 C 或 C++ 代码中设置适用于 Linux 上的 gdb 的断点?
IE:
int main(int argc, char** argv)
{
/* set breakpoint here! */
int a = 3;
a++; /* In gdb> print a; expect result to be 3 */
return 0;
}
原文由 J. Polfer 发布,翻译遵循 CC BY-SA 4.0 许可协议
看到这么多没有使用软件断点专用信号的答案令人失望, SIGTRAP
:
#include <signal.h>
raise(SIGTRAP); // At the location of the BP.
在 MSVC/MinGW 上,您应该使用 DebugBreak
或 __debugbreak
内在属性。一个简单的 #ifdef
可以处理这两种情况(POSIX 和 Win32)。
原文由 Benjamin Crawford Ctrl-Alt-Tut 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
4 回答4k 阅读
2 回答3.9k 阅读✓ 已解决
2 回答5.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
一种方法是发出中断信号:
在 C 中:
更新: Microsoft Docs 表示 Windows 并不真正支持
SIGINT
,因此如果担心可移植性,您最好使用SIGABRT
。