How can I set a breakpoint in C or C++ code programatically that will work for gdb on Linux?

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);

在C中:

#include <signal.h>
raise(SIGINT);

UPDATE:MSDN states Windows并不真正支持SIGINT,所以如果您担心可移植性,那么您最好使用SIGABRT.

C++相关问答推荐

-O and -wrap的行为

C中的整字母后缀i是什么

C strlen on char array

malloc实现:判断正确的分配对齐

通过管道将一个子系统的标准输出发送到另一个子系统的标准输出

如何在C中从函数返回指向数组的指针?

无法用C++编译我的单元测试

为什么GCC在每次循环迭代时都会生成一个数组的mov&S使用[]访问数组?(-03,x86)

从纯C中访问通用项对话框

Char变量如何在不使用方括号或花括号的情况下存储字符串,以及它如何迭代到下一个字符?

是什么让numpy.sum比优化的(自动矢量化的)C循环更快?

如何使解释器存储变量

为什么双精度d=flt_max+flt_max;在c语言中得到inf的结果

等同于铁 rust 的纯C语言S未实现!()宏

在C++中父进程和子进程中的TAILQ队列同步问题

如何确保我将使用C标准库函数的函数版本,如&getc";,而不是类似函数的宏版本?

为什么argc和argv即使在主函数之外也能工作?

模仿 memmove 的行为

Struct 内的数组赋值

malloc 属性不带参数