我希望在使用gdb调试时设置源代码的路径。我选择使用.gdbinit文件来执行此操作。基本上,它包含一个命令:directory="/path/to/src".但是,我希望能够将该命令指定为:directory="$SOURCESROOT/src"其中SOURCESROOT是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder在gdb调试session中执行此操作。基本上,我希望在gdb内部(或.gdbinit内部)访问环境变量。但不是被调试者的环境(设置env等),而是gdb本身的环境(即我首先在bash提示符下键入“gdb程序”
我希望在使用gdb调试时设置源代码的路径。我选择使用.gdbinit文件来执行此操作。基本上,它包含一个命令:directory="/path/to/src".但是,我希望能够将该命令指定为:directory="$SOURCESROOT/src"其中SOURCESROOT是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder在gdb调试session中执行此操作。基本上,我希望在gdb内部(或.gdbinit内部)访问环境变量。但不是被调试者的环境(设置env等),而是gdb本身的环境(即我首先在bash提示符下键入“gdb程序”
我有一个Clinux应用程序(A),它在启动时生成另一个进程(P)。当我想调试P时,我像往常一样启动A,然后使用ddd/gdb连接到P。当我想调试P的入口点(main的开始)时出现问题。如果我在将调试器连接到P时遵循通常的方法,已经太晚了。我找到的解决方案是在P的主体开始时插休眠眠,这样我就有时间连接gdb,但这不是一个非常优雅的解决方案。我也尝试过使用asm("int$3")但它似乎不起作用。你知道我该如何解决这个问题吗?(最好不改变A或P的代码) 最佳答案 你应该使用这个选项:setfollow-fork-modemodeWhe
我有一个Clinux应用程序(A),它在启动时生成另一个进程(P)。当我想调试P时,我像往常一样启动A,然后使用ddd/gdb连接到P。当我想调试P的入口点(main的开始)时出现问题。如果我在将调试器连接到P时遵循通常的方法,已经太晚了。我找到的解决方案是在P的主体开始时插休眠眠,这样我就有时间连接gdb,但这不是一个非常优雅的解决方案。我也尝试过使用asm("int$3")但它似乎不起作用。你知道我该如何解决这个问题吗?(最好不改变A或P的代码) 最佳答案 你应该使用这个选项:setfollow-fork-modemodeWhe
这是一个非常奇怪的问题,仅当使用-fPIC选项编译程序时才会发生。使用gdb我可以打印线程局部变量,但是单步执行它们会导致崩溃。thread.c#include#include#include#defineMAX_NUMBER_OF_THREADS2structmystruct{intx;inty;};__threadstructmystructobj;void*threadMain(void*args){obj.x=1;obj.y=2;printf("obj.x=%d\n",obj.x);printf("obj.y=%d\n",obj.y);returnNULL;}intmain(i
这是一个非常奇怪的问题,仅当使用-fPIC选项编译程序时才会发生。使用gdb我可以打印线程局部变量,但是单步执行它们会导致崩溃。thread.c#include#include#include#defineMAX_NUMBER_OF_THREADS2structmystruct{intx;inty;};__threadstructmystructobj;void*threadMain(void*args){obj.x=1;obj.y=2;printf("obj.x=%d\n",obj.x);printf("obj.y=%d\n",obj.y);returnNULL;}intmain(i
我在Windows上运行EclipseCDT来开发在远程Linux系统上构建和测试的C代码。目前,代码从未在Windows上编译。我能够使用CDT在gdbserver下的Linux目标上开始远程进程,然后从Windows主机附加gdb。然而,gdb立即失败并出现如下错误:warning:AhandlerfortheOSABI"GNU/Linux"isnotbuiltintothisconfigurationofGDB.Attemptingtocontinuewiththedefaulti386settings.[...]Remote'g'packetreplyistoolong:74a
我在Windows上运行EclipseCDT来开发在远程Linux系统上构建和测试的C代码。目前,代码从未在Windows上编译。我能够使用CDT在gdbserver下的Linux目标上开始远程进程,然后从Windows主机附加gdb。然而,gdb立即失败并出现如下错误:warning:AhandlerfortheOSABI"GNU/Linux"isnotbuiltintothisconfigurationofGDB.Attemptingtocontinuewiththedefaulti386settings.[...]Remote'g'packetreplyistoolong:74a
我正在gdb中调试一个二进制文件。它是由gcc在IntelIA-32上编译的C代码。我从objdump中检索了这个输出。我对这里的最后一行最感兴趣:08048d9e8048d9e:55push%ebp8048d9f:89e5mov%esp,%ebp8048da1:83ec18sub$0x18,%esp8048da4:c7442404889904movl$0x8049988,0x4(%esp)8048dab:088048dac:8b4508mov0x8(%ebp),%eax8048daf:890424mov%eax,(%esp)8048db2:e854010000call8048f0b我
我正在gdb中调试一个二进制文件。它是由gcc在IntelIA-32上编译的C代码。我从objdump中检索了这个输出。我对这里的最后一行最感兴趣:08048d9e8048d9e:55push%ebp8048d9f:89e5mov%esp,%ebp8048da1:83ec18sub$0x18,%esp8048da4:c7442404889904movl$0x8049988,0x4(%esp)8048dab:088048dac:8b4508mov0x8(%ebp),%eax8048daf:890424mov%eax,(%esp)8048db2:e854010000call8048f0b我