Articles of gdb

特定于Cell Linux环境的GDB文档在哪里?

在哪里可以find有关GDB特性的文档,以及debugging过程,特定于debugging混合PPU和SPU代码的Cell Linux程序?

gdb backtrace和pthread_cond_wait()

这是使用gcc 4.1.2和gdb 7.0的Redhat EL5机器,配有2.6.18-164.2.1.el5 x86_64内核。 当我使用gdb运行我的应用程序,并在运行时中断它的时候,我的一些线程显示下面的调用堆栈,当我做一个回溯: #0 0x000000000051d7da in pthread_cond_wait () #1 0x0000000100000000 in ?? () #2 0x0000000000c1c3b0 in ?? () #3 0x0000000000c1c448 in ?? () #4 0x00000000000007dd in ?? () #5 0x000000000051d630 in ?? () #6 0x00007fffffffdc90 in ?? () #7 0x000000003b1ae84b in ?? () #8 0x00007fffffffdd50 in ?? () #9 0x0000000000000000 in ?? […]

variables名称与GDBdebugging器冲突

我正在Linux上用GDBdebugging一个C ++程序,我需要在程序运行时看到一个成员variables的值。 不幸的是,成员variables名为list ,恰好是一个GDB关键字。 所以当我尝试: print m_operations.m_data[10].m_data.list 我得到… A syntax error in expression, near list'. 我尝试了各种各样的事情来向GDB表明我正在input一个文字expression式,比如在variables名称周围放置双引号或者单引号,但是这只会导致更多的语法错误。 我查看了GDB手册,找不到任何解决办法。 我无法重命名成员variables,因为我没有被授权修改该类。 此外, list是一个C ++对象,而不是一个普通的整数或POD,所以我不能简单地使用x关键字来检查那里的内存…至less不是花费一些严肃的时间来解密原始二进制代表的东西。 那么,有什么build议来解决这个问题?

GDB核心转储:崩溃后恢复argc argv值

在应用程序崩溃后,可以恢复main的argv和argc参数的确切值吗? 我只需要在Linux上使用应用程序core-dump和gdb debugger。

为什么gdb甚至会步入memcpy和其他系统函数?

我只用-g选项编写了我的程序,并添加了一些像-lpthread这样的库 但是,当我使用gdb来debugging我的程序,使用步骤,它会进入一些系统function,如fork和memcpy 。 有没有办法避免这种情况? 这是在我的电脑上安装valgrind后发生的。 内核:2.6.38-13

如何在g ++和c ++debugging过程中快速查看复杂结构

现代C ++有很多模板化和封装的元素,在debugging过程中会变得很麻烦,因为gdb是一个通用的debugging器,没有特定的c ++特性。 没有办法轻松地列出STL容器中的元素。 当使用boost :: shared_ptr共享指针时,通常没有办法去引用指向对象来查看发生了什么。 是否有一组gdbmacros,甚至更高级的gdb版本,可以使这个东西更容易看到?

在程序集中识别库调用

鉴于我从GDB获得的以下程序集,有什么办法可以确定哪个函数被导入? 广发发展的评论告诉我们,我们正在import的puts ,但我怎样才能静态解决这个问题? Dump of assembler code for function puts@plt: 0x00000000004003b8 <+0>: jmpq *0x2004a2(%rip) # 0x600860 <puts@got.plt> 0x00000000004003be <+6>: pushq $0x0 0x00000000004003c3 <+11>: jmpq 0x4003a8

gdb不显示非剥离可执行文件的源代码

我正在一个项目上,似乎我无法debugging我的代码。 首先,我认为这是我的IDE(Eclipse)中的一个configuration错误,但后来certificate它根本不工作,甚至没有像下面这样的单个程序的gdb。 test.c的 void main() { int a=1; int b=2; int c=3; a=b+2; // line 5: breakpoint is set here c=a+b; b=c+3; return; } user@mycomputer:/home/user/test$ gcc -g -O0 -c test.c user@mycomputer:/home/user/test$ gcc -g -O0 test.o -o test user@mycomputer:/home/user/test$ gdb test GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU […]

无法在malloc()中设置断点

代码示例(foo.c) int main(){ int *x=(int*)malloc(sizeof(int)); // break here *x=10; free(x); return 0; } 我想在malloc中断。 这是我尝试的: # gcc -g foo.c -o bar # gdb bar (gdb) b main Breakpoint 1 at 0x80484cf: file src.c, line 7. (gdb) r Breakpoint 1, main () at src.c:7 (gdb) b malloc Breakpoint 2 at 0x550944 (gdb) c Program exited normally. […]

饼图基地址在gdb中是固定的

我使用启用了ASLR的ubuntu-13.10 root@ubuntu:/home/meltdown# cat /proc/sys/kernel/randomize_va_space 2 我用gcc -pie选项编译了一个简单的hello世界程序。 如果我单独运行这个程序,PIE可执行文件的基地址是随机的。 喜欢这个。 root@ubuntu:/home/meltdown# cat /proc/8872/maps b758b000-b758c000 rw-p 00000000 00:00 0 b758c000-b773a000 r-xp 00000000 08:01 10749216 /lib/i386-linux-gnu/libc-2.17.so b773a000-b773c000 r–p 001ae000 08:01 10749216 /lib/i386-linux-gnu/libc-2.17.so b773c000-b773d000 rw-p 001b0000 08:01 10749216 /lib/i386-linux-gnu/libc-2.17.so b773d000-b7740000 rw-p 00000000 00:00 0 b7752000-b7756000 rw-p 00000000 00:00 0 b7756000-b7757000 r-xp 00000000 00:00 0 [vdso] b7757000-b7777000 r-xp 00000000 08:01 […]