Questions tagged «gdb»

使用此标记可解决与GDB(GNU软件系统的标准调试器)相关或相关的问题。


4
在GDB中运行应用程序,直到发生异常
我正在开发一个多线程应用程序,我想使用GDB对其进行调试。 问题是,我的线程之一一直死于消息: pure virtual method called terminate called without an active exception Abort 我知道该消息的原因,但是我不知道它在线程中出现的位置。回溯确实会有所帮助。 当我在GDB中运行我的应用程序时,每当线程被暂停或恢复时它就会暂停。我希望我的应用程序继续正常运行,直到其中一个线程死于该异常为止,这时所有内容都应停止,以便获得回溯。

2
GCC -g vs -g3 GDB标志:有什么区别?
使用gcc或Clang编译C源代码时,我总是使用该-g标志来生成gdb的调试信息。 gcc -g -o helloworld helloworld.c 我注意到有些人推荐了-g3。-g和-g3标志之间有什么区别?-g和之间还有区别-ggdb吗?
102 c  debugging  gcc  gdb  clang 

4
如何在gdb中加载读取stdin并获取参数的程序?
我有一个程序,可以从标准输入中获取输入,也可以从命令行中获取一些参数。看起来像这样: cat input.txt > myprogram -path "/home/user/work" 我尝试通过Mx gdb在emacs中使用gdb调试代码,我尝试使用以下命令加载程序: gdb cat input.txt > myprogram -path "/home/user/work" 但是,gdb不喜欢它。 问题从这里开始。不幸的是,我不了解解决方案,除了使用该-g选项编译并运行命令Mx gdb 之外,我不确定该做什么。




3
如何使用GDB查看堆栈的内容?
我是GDB的新手,所以我有一些问题: 如何查看堆栈的内容?示例:要查看寄存器的内容,请输入info registers。对于堆栈,应该是什么? 我怎么看的内容$0x4(%esp)?当我输入时print /d $0x4(%esp),GDB给出了一个错误。 平台:Linux和GDB
94 c  assembly  gdb 

2
如何中断gdb中给定地址的汇编指令?
0x0000000000400448 <main+0>: push %rbp 0x0000000000400449 <main+1>: mov %rsp,%rbp 0x000000000040044c <main+4>: mov $0x6,%eax 0x0000000000400451 <main+9>: leaveq 0x0000000000400452 <main+10>: retq 我试过了: breaki 0x0000000000400448 但是似乎没有这样的命令。 gdb有这样的功能吗?
94 assembly  gdb 

7
使用gdb检查标准容器(std :: map)内容
假设有这样的事情: #include <map> int main(){ std::map<int,int> m; m[1] = 2; m[2] = 4; return 0; } 我希望能够检查从gdb运行该程序的地图的内容。 如果尝试使用下标运算符,则会得到: (gdb) p m[1] Attempt to take address of value not located in memory. 使用find方法不会产生更好的结果: (gdb) p m.find(1) Cannot evaluate function -- may be inlined 有没有办法做到这一点?
93 c++  stl  map  gdb 

3
如何使用命令标志在将来的共享库上设置断点
我正在尝试使用该--command标志自动执行gdb会话。我正在尝试在共享库(相当于DLL的Unix)中的函数上设置断点。我的cmds.gdb看起来像这样: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r 但是,我得到以下信息: shlomi:〜/ progs / bugs-external / kde / font-breaking $ gdb --command = cmds.gdb ... GNU gdb 6.8-2mdv2009.0(Mandriva Linux版本2009.0) 版权所有(C)2008 Free Software Foundation,Inc. 许可证GPLv3 +:GNU GPL版本3或更高版本 这是免费软件:您可以自由更改和重新分发它。 在法律允许的范围内,没有任何担保。输入“显示复制” 和“显示保修”了解详情。 该GDB被配置为“ i586-mandriva-linux-gnu” ... (未找到调试符号) 未定义函数“ IA__FcFontMatch”。 使断点在将来共享库加载时挂起?(是或[n])[回答N;输入不是来自终端] 因此,它毕竟不会设置断点。如何将默认值设置为“ y”,以在未决的将来共享库加载时设置断点? 我记得自己有能力做些事情,但是却不记得自己做了什么。
92 c++  c  linux  unix  gdb 

5
如何在GDB中自动运行可执行文件?
我希望gdb立即运行该可执行文件,就像我键入“ run”一样(动机:我不喜欢键入“ run”)。 一种方法是将命令传递给gdb这样: $ echo run | gdb myApp 但是这种方法的问题是您与失去了互动性gdb。如果断点触发或myApp崩溃,则gdb退出。这种方法是讨论在这里。 查看中的选项--help,我看不到执行此操作的方法,但也许我缺少了一些东西。
91 gdb 

5
gdb:“未加载任何符号表”
尝试在gdb中添加断点时,我不断收到此错误消息。 我使用以下命令进行编译: gcc -g main.c utmpib2.c -o main.o and: cc -g main.c utmpib2.c -o main.o and also: g++ -g main.c utmpib2.c -o main.o 我也尝试使用“ -ggdb”而不是“ -g”,但仍然收到该错误消息。 然后执行gdb: $gdb 在gdb中: (gdb)exec-file main.o (gdb)break 59 No symbol table is loaded. Use the "file" command.
90 c  gdb 


5
gcc -ggdb和gcc -g有什么区别
当我使用gcc编译C程序时,通常会使用-g一些调试信息到elf文件中,以便gdb在需要时可以为我提供帮助。 但是,我注意到有些程序使用-ggdb,因为它应该使调试信息更加友好gdb。 它们有何不同?建议使用哪种? 注:链接的选项,调试程序或GCC,http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging-Options
90 gcc  gdb 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.