我想在Android机器等设备上调试ARM应用程序,我更喜欢使用gdb(ARM版本)而不是gdb和gdbserver来调试,因为有一个dashboard,Python中GDB的可视化界面。在设备上必须配合gdb(ARM版),所以我需要用python交叉编译一个ARM版的gdb,使用命令如下:./configure--host=arm-linux-gnueabi--target=arm-linux-gnueabi--with-python=/usr/bin但最后出现了错误信息:configure:8096:checkingwhethertousepythonconfigure:8098:
尝试使用gdb调试程序时,它在OPENSSL_cpuid_setup中报告SIGILL失败。使用这个简单的代码,我有相同的行为:#includeintmain(){SSL_library_init();}它编译并运行良好,但在回溯之后以gdb报告开始ProgramreceivedsignalSIGILL,Illegalinstruction.0xb6b2eb40in??()from/usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0(gdb)where#00xb6b2eb40in??()from/usr/lib/arm-linux-gnueab
谁能告诉我在通过GDB调试时使用哪个命令来显示源代码。会有很大帮助。 最佳答案 您可以使用Ctrl+xA键绑定(bind)进入或离开带有代码窗口的TUI模式。或者使用layoutsrc命令进入TUI模式。看其他途易keybindings和commands. 关于linux-GDB调试时如何显示代码窗口,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/19264899/
我有一个来自嵌入式SH3linux设备的core文件,以及我的主机linux中的交叉编译环境(sh3-linux-gdb)的gdb。但是我在用gdb加载核心文件时遇到了问题:$sh3-linux-gdb./myprogram./coreGNUgdb6.3Copyright2004FreeSoftwareFoundation,Inc....ThisGDBwasconfiguredas"--host=i386-pc-linux-gnu--target=sh3-linux"...GDBcan'treadcorefilesonthismachine.(gdb)为什么读不到核心文件?有没有办法从
我正在学习有关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