我试图在64位Ubuntu系统上调试32位可执行文件.它本身在命令行中运行良好,但是当我尝试使用gdb时,它挂在ld-linux.so.2中。此外,gdb适用于可执行文件的64位版本。有人知道我该试试什么吗?
我刚刚将一台机器重新映射到Ubuntu18.04.3,并安装了gcc和g++的多库版本。
提前谢谢。
gdb <executable>
GNU gdb ...
This GDB was configured as "x86_64-linux-gnu"
...
Reading symbols from <executable>...done.
(gd
在我逐步了解此文件中的任何代码(特别是静态库中的代码)之后,gdb会在几秒钟后崩溃。
我可以逐步通过静态库的其他部分和共享库,我已经加载了,它运行良好。该程序运行良好,在gdb崩溃后不会崩溃。
gdb版本7.5.91.20130417-cvs-ubuntu on linux mint 15
如何防止gdb在in创建器中崩溃?
我有一个小型C++程序:
// test.cpp
#include <vector>
#include <iostream>
using namespace std;
template class vector<int>;
int main()
{
vector<int> v;
for (size_t i = 0; i < 10; ++i)
{
if (!v.empty())
cout << v[0] << endl; //<== Add a cond
我有一个打印数据结构的函数,它的功能原型是:
void print_mode(FILE *fp, Mode *mode);
文件*允许您将输出重定向到任何您想要的地方,例如stdout、stderr、文件等。模式是数据结构
我试图从gdb内部调用这个函数,并希望输出被定向到gdb控制台窗口stdout?
我试过:
(gdb) p print_mode(STDOUT,fragment_mode)
No symbol "STDOUT" in current context.
(gdb) p print_mode(stdout,fragment_mode)
$17 = void
两者
我在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.
我已经强烈地将项目简化为以下代码,并且仍然得到相同的错误:
如果出现以下错误,崩溃实用程序将失败。
崩溃/usr/lib/debug/lib/modules/2.6.32-504.el6.x86_64.debug/vmlinux vmcore
版权(C) 2002-2012红帽公司版权(C) 2004,2005,2006,2010 IBM公司版权(C) 1999-2006惠普公司版权(C) 2005,2006,2011,2012 Fujitsu Limited版权(C) 2006,2007 VA Linux Systems Japan K.K.版权(C) 2005,2011 NEC Corporation版权(C) 1999,2002,2007 Sil
在我的linux机器上,计算一个比FLT_MAX大的浮子会导致无穷大,如下所示:
sacha@sacha-XPS13:~$ gdb
GNU gdb (GDB) 7.6.1-ubuntu
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There
我使用多线程HTTP服务器的Boost asio 编写了一个小应用程序。如果我按下ctrl-c键,我就会定期收到一个seg错误。我知道我一定是覆盖了某个地方的内存,但不太确定如何调试它。GDB中的堆栈跟踪没有任何帮助。在我点击dtor之前,有没有一些工具可以帮助我检测到腐败?(对不起,我基本上是个Java人)
谢谢。在Debian Linux上使用Boost 1.38
PS这里是堆栈跟踪
Program terminated with signal 11, Segmentation fault.
#0 0xb7f74389 in tls_destructor (data=0xb5200fc8
我正在Linux上调试静态多线程x86-64 C++应用程序。
我可以在函数上设置断点并在其上停止,我可以一步一步地遍历函数体。但是当我尝试单步执行另一个函数时,gdb并没有在它的开始处停止,它似乎只是继续执行。当我中断程序执行时,gdb进入中断状态,并且变得不可用:
(gdb) bt
Target is executing.
(gdb) c
Continuing.
Cannot execute this command while the selected thread is running.
(gdb)
作为一种变通办法,我可以多次使用stepi而不是step,stepi的工作方式与预期
gdb-6.8
在程序或库未加载的情况下,手动设置挂起的断点很奇怪,但不是通过.gdbinit。会出什么问题呢?
手动方式
(gdb) break foo.cc:111
No source file named foo.cc.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (foo.cc) pending.
(gdb) info break
Num Type Disp Enb Address What
1 breakp
当按照通常的方式运行时,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)
$
我用以下方法为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
我安装了libc6 & libc6-dbg。
(gdb) b
reak freeifaddrs
(gdb) run
Breakpoint 1, __freeifaddrs (ifa=0xa822e0) at ../sysdeps/unix/sysv/linux/ifaddrs.c:840
840 ../sysdeps/unix/sysv/linux/ifaddrs.c: No such file or directory.
(gdb) list
835 in ../sysdeps/unix/sysv/linux/ifaddrs.c
(gdb) disassemble
Dump of a
我正在尝试调试一个在处理请求时派生的进程。
我已经将follow-fork-mode设置为child,允许gdb在命中子对象中的断点时闯入。但是,当我继续从子进程中继续时,父进程就分离了。
很多文档都指向选项detach-on-fork,但是如果我尝试设置这个选项,我会得到:
(gdb) set detach-on-fork on
No symbol "detach" in current context.
该选项的链接清晰可见:
编辑:系统信息
>uname -a
Linux localhost 2.6.9-78.0.22.ELsmp #1 SMP Thu Apr 3
我正在尝试远程调试Linux的内核。我已经创建了一个VM (使用VMware),并使用gdb从我的PC连接到它,一切正常。
问题是gdb无法加载vmlinux-gdb.py脚本。我尝试在gdb上使用source命令添加它,但得到以下错误:
Traceback (most recent call last):
File "~/workspace/kernels/default-kernel/scripts/gdb/vmlinux-gdb.py", line 28, in <module>
ImportError: No module named 'linu
代码(m1.cpp):
#include <iostream>
using namespace std;
int main (int argc, char *argv[])
{
cout << "running m1" << endl;
return 0;
}
GDB版本: GNU gdb (GDB) 7.6.2
使用:g++ -g m1.cpp构建
命令行历史记录:
(gdb) b main
Breakpoint 1 at 0x40087b: file m1.cpp, line 6.
(gdb) r
Starting pro
我有一个C程序,它编写了一个非常复杂的脚本来运行它。我需要使用gdb来调试这个程序。我尝试运行这个脚本并将gdb附加到它的进程中,但是我无法设置我需要的断点:
$ gdb median.o 27944
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free softwa