Tag: gdb

调试没有符号的核心文件

我有一个C应用程序,我们已部署到客户站点。 它是在HP-UX上编译和运行的。 用户已报告崩溃,我们已获得核心转储。 到目前为止,我一直无法在内部复制崩溃。 正如您所怀疑的那样,核心文件/部署的可执行文件完全没有任何符号。 当我在gdb中加载并执行bt时,我得到的最好的是: (gdb) bt #0 0xc0199470 in ?? () 我可以在文件上做一个“字符串核心”,但我的理解是,我到达那里的是可执行文件中的所有字符串,所以在那里找到任何东西似乎是不可能的。 我确实有一个可执行文件的调试版本(用-g编译),不幸的是比发布版本新几个月。 如果我尝试使用该集线器启动gdb,我会看到: warning: exec file is newer than core file. Core was generated by `program_name’. Program terminated with signal 11, Segmentation fault. __dld_list is not valid according to __dld_flags. #0 0xc0199470 in ?? () (gdb) bt #0 0xc0199470 in ?? () […]

在Mac上使用gdb在eclipse中调试 – 无法执行MI命令:-exec-run

我有我的Eclipse Kepler和我简单的HelloWorld C程序,我想学习如何调试C程序。 单击调试按钮时,我收到以下错误消息: 最终启动顺序错误无法执行MI命令:-exec-run来自调试器后端的错误消息:无法找到进程ID为359的Mach任务端口:(os / kern)失败(0x5)。 无法找到进程ID为359的Mach任务端口:(os / kern)失败(0x5)。 我搜索了一整天,没有找到任何解决方案。 我已经在Eclipse GDB MacOSX Mavericks这篇文章中做了所有推荐的事情,但仍然会出现此错误。 如果有人可以帮助我在Eclipse中设置调试器,那真的很棒。 哦,我通过macports下载并安装了gdb-apple,我不得不使用“-f”选项和codesign命令,因为它没有用。 也许这些是重要信息。

gdb无法进入printf

这是我的示例程序: #include int main() { printf(“hello good morning \n”); return 0; } gcc -Wall -g temp.c /opt/langtools/bin/gdb a.out HP gdb 3.3 for PA-RISC 1.1 or 2.0 (narrow), HP-UX 11.00. Copyright 1986 – 2001 Free Software Foundation, Inc. Hewlett-Packard Wildebeest 3.3 (based on GDB) is covered by the GNU General Public License. Type “show copying” to […]

LDR – 文字池 – ARM

我知道如何使用ARM中的LDR指令加载立即值。 例如: LDR R0,=0x0804c088该指令将值( 0x0804c088 )加载到寄存器r0 。 当我尝试访问地址时,它使用gdb使用x/x $r0存储。 我收到消息: Cannot access memory at address 0x0804c088的Cannot access memory at address 。 但这不是地址,它是存储在该寄存器中的值,地址是存储在文字池中的PC相对地址。 我在那里做的错误是什么? 我明白了吗? 而且,我该如何设置文字池,你能给我一个例子吗? @Carl Norum:这是代码。 __asm__(“LDR R0,=0x0804c088”); __asm__(“LDR R1,[PC, #34];”); 来自gdb的O / p (gdb) info registers r0 0x804c088 134529160 r1 0xf2c00300 4072669952 r2 0x0 0 r3 0x1 1 r4 0x8961 35169 r5 0x0 […]

将double转换为float后的值不正确

我有一些C代码执行由gcc(gcc(GCC)4.4.4 20100726(Red Hat 4.4.4-13)编译的高精度算法。)计算的最终结果是双精度值,其值为622.07999995861189。我是将双人投掷到浮子上。 frequency_value =(float)current_freq; 其中current_freq是一个double,而frequency_value是一个float。强制转换后的frequency_value的值是622.080017。我希望在gdb中计算的值是622.079956 (gdb)p(float)current_freq $ 1 = 622.079956 任何人都可以解释gcc和gdb计算出的值之间的巨大差异。

为什么gcc反汇编程序为局部变量分配额外的空间?

我用C编写了简单的函数, void GetInput() { char buffer[8]; gets(buffer); puts(buffer); } 当我在gdb的反汇编程序中对它进行反汇编时,它会进行以下反汇编。 0x08048464 : push %ebp 0x08048465 : mov %esp,%ebp 0x08048467 : sub $0x10,%esp 0x0804846a : mov %gs:0x14,%eax 0x08048470 : mov %eax,-0x4(%ebp) 0x08048473 : xor %eax,%eax => 0x08048475 : lea -0xc(%ebp),%eax 0x08048478 : mov %eax,(%esp) 0x0804847b : call 0x8048360 0x08048480 : lea -0xc(%ebp),%eax 0x08048483 : mov %eax,(%esp) […]

sYSMALLOc:断言失败 – 任何想法如何有效调试?

我的服务器守护程序在大多数计算机上工作正常但是我得到的一个: malloc.c:3074: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) – 1) * 2])) – __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) – 1)) & ~((2 * (sizeof(size_t))) – 1)))&& ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)’ failed. gdb回溯: […]

制作gdb显示汇编指令而不是C

可能重复: 切换到gdb中的程序集 我正在调试gdb中的一些代码。 当我运行ni (用于下一条指令 )命令时,它显示C代码。 显示执行的汇编指令对我来说更有意义。 (gdb) ni 0x0804845a 28 tmp = *lpp; (gdb) ni 0x0804845c 28 tmp = *lpp; (gdb) ni 0x0804846a 29 **lpp = (unsigned long) &buf; (gdb) ni 0x0804846c 29 **lpp = (unsigned long) &buf; 有没有办法让gdb显示汇编代码,而不是每次都调用disassm ? 编辑:我知道layout asm命令,它在readline窗口中显示代码。 我想在gdb命令行上看到反汇编,而不是在gdb窗口中。

-c选项在GCC中做什么

有谁知道-c标志在gcc做了什么? 例如,有什么区别 gcc -c output0.c vs gcc output0.c 我知道第二个创建.a文件,但我不是.a文件。 还有-o做什么 gcc output0.o -o output0 只是将输出文件命名为right?

gdb | 查看变量参数列表

我使用bt命令查看堆栈跟踪。 输出是 (gdb) bt #0 0x001ae4cd in Debugger (message=0x1 “???\a”) at /SourceCache/xnu/xnu-1228.7.58/osfmk/i386/AT386/model_dep.c:705 #1 0x3bf97000 in ?? () #2 0x0012b0fa in panic (str=0x5ef “”) at /SourceCache/xnu/xnu-1228.7.58/osfmk/kern/debug.c:274 #3 0x001a8cd4 in kernel_trap (state=0x51a67c80) at /SourceCache/xnu/xnu-1228.7.58/osfmk/i386/trap.c:680 #4 0x0019ede5 in return_from_trap () at pmap.h:176 #5 0x00132bea in __doprnt (fmt=, argp=0x51a67e6c, putc=0x38ad24 , arg=0x51a67e48, radix=10) at /SourceCache/xnu/xnu-1228.7.58/osfmk/kern/printf.c:439 #6 0x0038ad11 in kvprintf […]