[转] 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。
[转] GDB attach的更多相关文章
- 非root不能gdb attach的限制
Could not attach to process. If your uid matches the uid of the targetprocess, check the setting of ...
- Use gdb attach pid and debug it
- gdb命令中attach使用
[测试程序] 我们先看看我们的测试程序: /* in eg1.c */ int wib(int no1, int no2) { int result, diff; di ...
- GDB调试命令小结
1.启动调试 前置条件:编译生成执行码时带上 -g,如果使用Makefile,通过给CFLAGS指定-g选项,否则调试时没有符号信息.gdb program //最常用的用gdb启动程序,开始调试的方 ...
- gdb 调试多线程
基本i threads 等操作略过,只谈线程同步.异步控制: 先点到,gdb attach到主线程t1 时,所有线程都会停止,所谓同步异步效果,是指在apply continue到所有线程之后, 再切 ...
- 调试多线程 & 查死锁的bug & gcore命令 & gdb对多线程的调试 & gcore & pstack & 调试常用命令
gdb thread apply all bt 如果你发现有那么几个栈停在 pthread_wait 或者类似调用上,大致就可以得出结论:就是它们几个儿女情长,耽误了整个进程. 注意gdb的版本要高于 ...
- GDB配置与.gdbinit的编写
GDB配置与.gdbinit的编写 当 GDB(即 GNU Project Debugger)启动时,它在当前用户的主目录中寻找一个名为 .gdbinit 的文件:如果该文件存在,则 GDB 就执行该 ...
- Android gdb 调试
[1].终端目录设置到: proj.android[2].make文件的编译选项加上: -g -gstabs+[3].执行编译脚本: sh ./build_native.sh NDK_DEBUG=1[ ...
- GDB调试器使用总结
概述:GDB是linux下调试程序的神器,做为linux程序员,如果不能熟练的使用GDB进行程序调试,那将是很失败的事情.强大的功能使GDB的使用也变得比较复杂,如果是初学者肯定会比繁杂的命令吓到.下 ...
随机推荐
- Build Android-x86 ICS 4 Virtualbox from Google Virtualbox Target and Intel Kernel 编译体验
最近一直在研究android源码的编译,应该说研究的很辛苦,最难的是下源码,总是不停的断掉,最后感谢公司的高网速,找到方法后12G的源码只花了1个小时就下完了. 参考以下网址:http://softw ...
- 原创 HTML5:JS操作SVG实践体会
在工业信息化系统里,常常需要动态呈现系统的数据在一张示意图里,用于展现系统状态,分析结果等.这样用JavaScript操作svg 元素就有现实意义.本人近期做了一些实践,现分享一下. 需求: 你下面这 ...
- SASS type-of 函数
今儿写个type-of,算是备忘录吧. 1.number type-of(0) // number type-of(1px) // number 2.string type-of(a) // stri ...
- TIOBE.2017.01最新编程语言排行榜
Jan 2017 Jan 2016 Change Programming Language Ratings Change1 1 Java ...
- 怎样在Swift中使用CocoaPods-b
最近关于CocoaPods有很多的议论.你可能从别的开发者那里听到过,或者在Github的目录中看到过.如果你之前从来没有用过,你可能会问,"CocoaPods到底是什么?" 它不 ...
- 编写C# Windows服务,用于杀死Zsd.exe进程
最近经常在我的xp系统进程中出现Zsd.exe进程.刚开始他占用内存不是很大.但是过了一段时间就会变成几百M 机器就会变得很卡,网上说Zsd可能是病毒.所以我就想要不写一个Windows服务,让他每隔 ...
- select m objects from n objects randomly
Q: how to select m objects randomly from n objects with euqal possibility? A: allocate an array of m ...
- 转载:关于 Token,你应该知道的十件事
关于 Token,你应该知道的十件事 原文地址:http://alvinzhu.me/blog/2014/08/26/10-things-you-should-know-about-tokens/ 原 ...
- QT美化界面的文章(真的很美)
http://www.hookr.cn/tag/qt http://blog.csdn.net/yiyaaixuexi/article/category/758470 http://www.qtcn. ...
- Windows8.1 preview硬盘安装(图解)
本人小本系统是win7 32位的,想要装win8 64位 ,想直接镜像安装不可能,因为位数不同.U盘只有2G ,显然也放不下3.6G的win8系统.借助NT6 HDD Installer,可以在本地硬 ...