gdb调试段错误及使用
在编程调试中,经常出现段错误,此时可用gdb调试。具体方法为注册段错误信号处理函数,在处理函数中启动gdb。 具体代码如下: void segv_handler(int no) { char buf[512]; char cmd[512]; FILE *file; snprintf(buf, sizeof(buf), "/proc/%d/cmdline", getpid()); if(!(file = fopen(buf, "r"))) { exit(EXIT_FAILURE); } if(!fgets(buf, sizeof(buf), file)) { eixt(EXIT_FAILURE); } if(buf[strlen(buf) - 1 ] == '\n') { buf[strlen(buf) -1] = '\0'; } snprintf(cmd, sizeof(cmd), "gdb %s %d", buf, getpid()); system(cmd); } 注册函数: signal(SIGSEGV, segv_handler); 下面转自一些总结: 作为一名程序猿,日常开发中解决各种bug是不可避免的。对于简单的bug通过日志分析,或者增加打印信息就能很快定位到原因并解决。但是对于某些比较复杂的情况,想要定位到bug往往十分困难。查阅了很多资料,经过不断尝试