如果目标进程已经core dump了,那么 gdb -c core xxx xxx是对应的程序文件。 如果目标进程还在运行,通常此时用于调试线程死锁的情况。有两种方法 一是 gdb -p xxx xxx是该进程的进程ID 或者用gcore xxx先获取对应进程的core,他会生成一个core文件 core.xxx 进入gdb后 (gdb) info threads 可以列出所有的线程,缺省设为当前的线程前面有一个*号 比如 gdb) info thread 9 system thread 154262 Priority:154 0xc000000...
int main(){ char ch[15]; ........ } 函数调用,我理解的栈结构应该是这样的 上一栈结构 (参数2) (参数1) eip ebp 这一栈开始 ch 。。。。。 大致是这样吧 但是加了 -g后好像就不是了 进入gdb后,info f(main这一层的栈结构) 显示的是 eip at 0xbffff1dc ebp at 0xbffff1d8, edi at 0xbffff1d4, esi at 0xbffff1d0, &ch at 0xbffff1c0. 为什么?在局部变量ch和ebp间那两个寄存器中是什么值? 晕!!
gdb调试多线程时,多个线程之间老是来回切换,而且线程的执行也不受gdb的限制,调试活动线程时,非活动线程都在自由执行,没有阻塞住单步执行。 帮助里面说可以使用opition:set scheluer-locking on/off/step来设置线程的锁定状态,但是我设置了之后,线程并没有如帮助里面说的那样,一是还会在多个线程之间切换,二是线程的执行仍然是单独执行,并没有将所有非活动线程阻塞,请问这是怎么回事呢?
在winxp下装了vm solaris9,下了gcc,gdb安装包,安装成功。 1。在命令行运行gdb,出来下面出错信息: # gdb GNU gdb 6.0 Copyright 2003 Free Software Foundation, Inc. gdb is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for gdb. ...
大家好, 我使用ddd调试pthread多线程,ddd启动后,显示如下信息: GNU DDD 3.3.1 (i386-redhat-linux-gnu), by Dorothea L dlopen failed on 'libthread_db.so.1' - libc.so.6: cannot handle TLS data gdb will not be able to debug pthreads. 但是我在/lib/i686/,/lib/tls/ 目录下都能找到libc.so.6这个文件。请大家指点。 多谢多谢!