zoukankan      html  css  js  c++  java
  • [转] 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
    ", 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。

  • 相关阅读:
    HDU--4548 美素数
    【思维】南阳理工 14 会场安排问题
    【思维】【水】 南阳oj 喷水装置(一)
    【思维】南阳理工91 阶乘之和
    【转】哈夫曼树 九度1172
    Array
    HDU--1702 ACboy needs your help again!
    栈和队列
    3.Compound data types
    4.Object Oriented Programming
  • 原文地址:https://www.cnblogs.com/qiangxia/p/4689458.html
Copyright © 2011-2022 走看看