如何以编程方式在 C 或 C++ 代码中设置适用于 Linux 上的 gdb 的断点?
I.e.:
int main(int argc, char** argv)
{
/* set breakpoint here! */
int a = 3;
a++; /* In gdb> print a; expect result to be 3 */
return 0;
}
一种方法是发出中断信号:
#include <csignal>
// Generate an interrupt
std::raise(SIGINT);
In C:
#include <signal.h>
raise(SIGINT);
UPDATE: 微软文档 https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/signal说Windows并不真正支持SIGINT
,因此,如果考虑可移植性,您最好使用SIGABRT
.
任何 Win32 应用程序都不支持 SIGINT。当 CTRL+C 中断发生时,Win32 操作系统会生成一个新线程来专门处理该中断。这可能会导致单线程应用程序(例如 UNIX 中的应用程序)变成多线程并导致意外行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)