当按照通常的方式运行时,gdb会像预期的那样停止:
(gdb) break main
(gdb) run
Starting program ...
Breakpoint 1, main ...
在管道运行时,gdb从不停止:
(gdb) run | cat
Starting program: /home/sds/z | cat
...
During startup program exited normally.
(gdb)
如何调试管道时的程序行为?
我的设置:
$ gdb --version
GNU gdb (GDB) Amazon Linux (7.6.1-64.33.amzn1)
$
代码示例(foo.c)
int main(){
int *x=(int*)malloc(sizeof(int)); // break here
*x=10;
free(x);
return 0;
}
我想打破马洛克。以下是我所尝试的:
# 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
我试图在RT上调试一个多线程应用程序。在普通Linux上,应用程序运行良好,GDB也运行良好。在RT Linux上,应用程序运行良好,但在GDB下,应用程序运行几秒钟,然后终止并打印:
Program terminated with signal SIGTRAP, Trace/breakpoint trap. The program no longer exists.
我无法进行回溯,也无法确定是什么导致了问题。我怀疑这可能是gdb使用的一些库,或者可能是应用程序中的内存损坏。
我创建了60多个线程,更多的线程是由各种看门狗和计时器创建的。到目前为止,我已经尝试过:
检查libp线程.so
我用以下方法为arm编译了gdbserver 7.6:
cd /gdb-7.6-src/gdb/gdbserver
./configure --target=arm-linux --host=arm-linux
make CC=/path/to/cross-compiler-gcc
然后,我为arm编译了gdb 7.6,并使用:
cd /gdb-7.6-src/
./configure --target=arm-linux --prefix=/opt/gdb-arm/install/
make && make install
我用以下方法编译了我的琐碎应用程序:
/path/t
我正在尝试使用GDB进行调试(以找到一个恼人的分段错误)。当我跑步时:
gdb ./filename
在命令行中,我得到以下错误:
This GDB was configured as "i686-pc-linux-
gnu"..."/path/exec": not in executable
format: File format not recognized
当我执行:
file /path/executable/
我得到以下信息:
ELF 64-bit LSB executable, AMD x86-64,
version 1 (SYSV), for
我是gdb的新手。当我调试我的程序时,我只得到像下面这样的回溯。
Program received signal SIGSEGV, Segmentation fault.
0x000000003075a238 in ?? ()
(gdb) backtrace
#0 0x000000003075a238 in ?? ()
#1 0x00007fff72825da8 in ?? ()
#2 0x0000000000000008 in ?? ()
#3 0x000000003063c340 in ?? ()
#4 0x0000000000000000 in ?? ()
(gdb)
我猜有
我将gcc编译器下载到我的linux环境中,并使用ssh进入vscode,在我的windows机器上模拟linux环境。我创建的编译文件和我的教授给我的makefile运行得很好,但是每当我使用我的教授还提供的gdb调试器进行调试时,调试器挂起,不允许我使用断点单步执行代码。我提供了调试器的代码以及cpp属性和任务文件。 调试器代码: {
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For
我在Linux下有一个小的C++项目。当我尝试用gdb调试可执行文件时,我会得到以下错误:
../../gdb/dwarf2read.c:16760: internal-error: follow_die_offset:
Assertion 'dwarf2_per_objfile->reading_partial_symbols' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
我已经强烈地将项目简化为以下代码,并且仍然得到相同的错误:
由于某种原因,我昨天重新安装了我的操作系统(Manjaro),并通过gcc和gdb安装了pacman,然后编写了一个非常小的示例程序,以确保我的环境是正确的,因为我是linux和gdb的初学者。编译后,它按照我的预期进行了。然后,我想通过gdb查看STL源代码,所以我用tui模式打开了我的gdb。一开始一切看起来都很正常,但我的gdb不能进入我想要看到的ss.insert(),屏幕的顶部是 No Source可用的。我发现operator<<源文件的目录与重新安装OS之前的版本不同,而且/usr/shared/c++/已经不存在了!
这是GCC(g++)和gdb的版本信息。
Usi
我们正在VMWare中运行Linux。当使用gdb进行调试时,如果试图跨越memset/memcmp/strcmp等.,gdb返回以下错误:
Cannot find bounds of current function
我们不尝试进入这些c-函数,而只是超越它们。有什么想法吗?
编辑:
我添加了导致问题的示例代码和编译标志。这可能与在64位计算机上运行32位可执行文件有关。
这些版本是:
$ uname -a
Linux lavilinux 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64 GNU/Linux
$ g++ -v
Using built-i
我通过明威在windows上编写了一个linux程序。但是,该程序在Windows上的输出与Linux上的输出不同。
例如,在Windows上,输出是这样的(我得到的是'zu‘而不是实数):
Approximated minimal memory consumption:
Sequence : zuM
Buffer : 1 X zuM = zuM
Table : 1 X zuM = zuM
Miscellaneous : zuM
Total : zuM
在Linux上,最初的程序编译时带有警告(没有明格)。在W
我正在使用
p12user@ubuntu:~$ uname -a
Linux ubuntu 2.6.32-40-generic #87-Ubuntu SMP Tue Mar 6 00:56:56 UTC 2012 x86_64 GNU/Linux
p12user@ubuntu:~$ gdb -v
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http
(gdb) reverse-step
Target child does not support this command.
这是在Linux 2.6.18中
内核不支持它吗?有没有我需要的特制的gcc arg?
gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52)
我有一堆使用-ggdb3标志编译的源代码。我已经将源代码和可执行文件复制到另一台机器上。当我在gdb中运行exe时,当它中断时,它不会显示行号处的语句。
这就是我所看到的
Breakpoint 1, TestCode (handler=0x806e110, args=0xffffd2b0)
at ../myfile.c:1080
1080 ../myfile.c: No such file or directory.
(gdb) n
1083 in ../myfile.c
(gdb)
1084 in ../myfile.c
(gdb)
1085 in ../
在gdb中启动一个程序时,我得到了这个错误:
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Traceback (most recent call last):
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
from libstdcxx.v6.printers import regis