我正在学习有关gdb的类(class)。在后面的类(class)中,类(class)涵盖了在ARM体系结构上进行调试,因此向我展示了一个允许我模拟这种情况的设置。我当前的设置包括:Windows10:物理主机Ubuntu12.04.5LTS:通过Windows10上的OracleVirtualBoxguest操作系统Linuxdebian-armel2.6.32-5-versatile:在Ubuntu上通过qemu2.8.0guest操作系统ARMDebian镜像来自https://people.debian.org/~aurel32/qemu/armel/图像是用启动的qemu-sy
我想通过串行ttyS0从我的64位suse机器调试MIPSlinux驱动程序。使用过的gdb在LAN上可以很好地调试应用程序,但不能与kgdboverserial一起使用。我用了这个page还有一些开始调试但没有最终结果。我的内核是使用以下设置编译的:CONFIG_MAGIC_SYSRQ=yCONFIG_HAVE_ARCH_KGDB=yCONFIG_KGDB=yCONFIG_KGDB_SERIAL_CONSOLE=y#CONFIG_KGDB_TESTSisnotsetCONFIG_CMDLINE="kgdboc=ttyS0,115200"如果我运行gdb:gdbvmlinux(gdb)
我已经使用yasm汇编了代码,并链接到我的C++程序,但我无法在gdb中对来自汇编语言文件的符号设置断点。命令行可能不是很清楚,但我们开始吧:"g++"-ftemplate-depth-128-O0-fno-inline-Wall-g-fPIC-std=c++11-I"$HOME/usr/include"-c-o"bin/gcc-4.7/debug/main.o""main.cpp"yasm-gdwarf2-felf64-obin/gcc-4.7/debug/mandel.omandel.yasm"g++"-L"$HOME/usr/lib"-Wl,-R-Wl,"$HOME/usr/li
示例源代码:#include#include#include#defineGIGABYTE1024*1024*1024intmain(void){void*foo;intresult;foo=(void*)malloc(GIGABYTE*5);result=errno;if(foo!=NULL){return2;}else{fprintf(stderr,"ERROR:%d\n",result);return1;}return0;}问题:如果malloc()返回,如何指示gdb(#gdb-silent./huge_malloc)停止/暂停执行>0x0,不检查foo是否为0x0
我对ddd和gdb很陌生。我有另一个交叉编译器,例如arm_gdb,如何设置ddd使用这个arm_gdb而不是默认的gdb?提前致谢。 最佳答案 来自manpage:ddd--debugger"xdb-ddirectory"对你来说ddd--debugger"arm_gdb"要使其成为默认值,请考虑使用符号链接(symboliclink)和/或shellaliases 关于linux-如何配置ddd以使用另一个gdb而不是默认gdb,我们在StackOverflow上找到一个类似的问题:
我正在开发一个作为守护进程运行的高流量网络C服务器应用程序。在某些情况下,应用程序会崩溃(总是没有核心)。我如何使用gdb调试正在运行的守护进程以找到生成SIGSEGV的位置?注释:我知道如何使用gdb使用附加命令附加到正在运行的进程附加到进程后,它停止。如果我运行然后“继续”,如果程序没有崩溃,gdb将保持阻塞状态。如果我按CTRL-C,进程将退出,我无法简单地分离gdb。所以问题是:有没有一种方法可以在gdb不卡住的情况下继续该过程,但如果该过程没有崩溃又能够分离? 最佳答案 尝试异步模式和“继续&”:在下面保存到non-sto
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git请特别注意标签部分。这个决定背后的理由是什么?合并是否会影响构建最新binutils和GDB的建议方法?(事实上,当我checkoutbinutils-2_25_1并运行makeall&&makeinstall时,我也得到了gdb。) 最佳答案 我做了转换。我将它们加入存储库的原因部分是历史原因,部分是实际原因。从历史上看,gdb和binutils几乎一直在一起。当它们在Cygnus中维护时,它们位于单个源代码树(称为
我正在调试一个使用libnetfilter_queue的程序。文档指出用户空间队列处理应用程序需要CAP_NET_ADMIN功能才能运行。我已使用setcap实用程序完成此操作,如下所示:$sudosetcapcap_net_raw,cap_net_admin=eip./a.out我已验证功能已正确应用,因为a)程序正常运行并且b)getcap返回以下输出:$getcap./a.out./a.out=cap_net_admin,cap_net_raw+eip但是,当我尝试从命令行使用gdb(例如$gdb./a.out)调试该程序时,由于没有正确的权限集。gdb的调试功能在其他情况下完美
我有一个在CentOS下运行的服务器应用程序。服务器每秒响应许多请求,但每隔一小时左右就会反复崩溃并创建一个故障转储文件。情况真的很糟糕,我需要尽快找出坠机原因。我怀疑问题是并发问题,但我不确定。我可以访问源代码和故障转储文件,但我不知道如何使用故障转储来查明问题。非常感谢任何建议。 最佳答案 首先要查找的是程序崩溃时收到的错误消息。这通常会告诉您发生了什么样的错误。例如“segmentationfault”或“SIGSEGV”几乎肯定意味着您的程序已经取消引用NULL或其他无效指针。如果程序是用C++编写的,那么错误消息通常会告诉
abijithbufferOverFlow$gdba.outGNUgdb(GDB)7.6Copyright(C)2013FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochangeandredistributeit.ThereisNOWARRANTY,totheextentpermittedbylaw.Type"showcopying"and"showwarranty"fordetails.ThisGDBwasconfiguredas"x86_64-