[转] GDB attach

转:http://blog.csdn.net/wangeen/article/details/14230171

attach是GDB一种重要的debug模式,在MPI程序debug中发挥重要的作用。

具体的执行步骤如下:

1) 首先在程序开始的地方添加如下代码, 注意这是个死循环,之所以用死循环就是让他一直在等待attch

{
int i = 0;
char hostname[256];
gethostname(hostname, sizeof(hostname));
printf("PID %d on %s ready for attach\n", getpid(), hostname);
fflush(stdout);
while (0 == i)
sleep(5);
}

启动程序会得到如下语句

PID 15425 on XXX ready for attach

PID 15426 on XXX ready for attach

2) 启动GDB

$gdb

(gdb) attach 15425

(gdb) up      // 这里的up非常重要,见misc

(gdb) set var i=1

这样跳出死循环,继续执行。

3) misc

关于GDB的使用

过去我们总觉得GDB很难用,很多debug信息都没有能显示出来,尤其是在多线程的情况下,我在使用gdb attach MPI
程序的时候找到了其中的原因,因为gdb总是不停的在尝试暂停程序抓取stack中的内容到frame,如果遇到sleep之类的情况,gdb就获取不到
任何信息,在这样的情况下我们需要使用up down来切换frame。

上一篇:bzoj1095: [ZJOI2007]Hide 捉迷藏 线段树维护括号序列 点分治 链分治


下一篇:ue4打包问题的巧妙解决——二分回退大法!