这是我尝试过的,但似乎不起作用:(gdb)callprintf("%d",6)$8=1 最佳答案 你看不到结果是因为stdout(FILE*)有一个输出缓冲区。在缓冲区已满或遇到'\n'之前,它不会向屏幕输出任何内容。这样调用printf:(gdb)call(int)printf("%d\n",6)6$6=2顺便说一句,“$6=2”是printf的结果值。 关于c-如何在gdb中查看printf的输出?,我们在StackOverflow上找到一个类似的问题:
这是我尝试过的,但似乎不起作用:(gdb)callprintf("%d",6)$8=1 最佳答案 你看不到结果是因为stdout(FILE*)有一个输出缓冲区。在缓冲区已满或遇到'\n'之前,它不会向屏幕输出任何内容。这样调用printf:(gdb)call(int)printf("%d\n",6)6$6=2顺便说一句,“$6=2”是printf的结果值。 关于c-如何在gdb中查看printf的输出?,我们在StackOverflow上找到一个类似的问题:
我想调试一个程序,使用gdb。但我通过脚本调用该程序。如何使用gdb?脚本很长,我无法使用gdb的命令行参数直接调用程序。脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程。我想做的是,用那个程序启动gdb,然后添加我的断点执行脚本(仅供引用-它也接受参数),然后当它遇到断点时做任何我想做的事。我查看了gdb中的shell选项,但如果我没记错的话它会生成一个新的shell,并在完成后返回到gdb。这不是我想要的。如果有更好的方法请告诉我。 最佳答案 有几种方法。真正老派的方法是在程序的main中加入一个循环,例如:volati
我想调试一个程序,使用gdb。但我通过脚本调用该程序。如何使用gdb?脚本很长,我无法使用gdb的命令行参数直接调用程序。脚本启动时创建的进程也很短暂,因此无法将gdb附加到进程。我想做的是,用那个程序启动gdb,然后添加我的断点执行脚本(仅供引用-它也接受参数),然后当它遇到断点时做任何我想做的事。我查看了gdb中的shell选项,但如果我没记错的话它会生成一个新的shell,并在完成后返回到gdb。这不是我想要的。如果有更好的方法请告诉我。 最佳答案 有几种方法。真正老派的方法是在程序的main中加入一个循环,例如:volati
我在ARM9板上运行嵌入式应用程序,总闪存大小仅为180MB。我能够运行gdb,但是当我运行时(gdb)生成核心转储我得到一个错误warning:Memoryreadfailedforcorefilesection,1048576bytesat0x4156c000.warning:Memoryreadfailedforcorefilesection,1048576bytesat0x50c00000.Savedcorefilecore.5546Theprogramisrunning.Quitanyway(anddetachit)?(yorn)[answeredY;inputnotfrom
我在ARM9板上运行嵌入式应用程序,总闪存大小仅为180MB。我能够运行gdb,但是当我运行时(gdb)生成核心转储我得到一个错误warning:Memoryreadfailedforcorefilesection,1048576bytesat0x4156c000.warning:Memoryreadfailedforcorefilesection,1048576bytesat0x50c00000.Savedcorefilecore.5546Theprogramisrunning.Quitanyway(anddetachit)?(yorn)[answeredY;inputnotfrom
假设我已经将gdb附加到一个进程,并且在它的内存布局中有一个文件和行号,我想要它的内存地址。如何获取文件x中第n行的内存地址?这是在Linuxx86上。 最佳答案 (gdb)infolinetest.c:56Line56of"test.c"startsataddress0x4005aeandendsat0x4005ba.此外,对于python,您可以使用来自Symbol-Tables-In-Python这目前需要来自cvs的最新版本的gdb,但我想将在7.5中普遍可用(gdb)pyx=gdb.find_pc_line(gdb.dec
假设我已经将gdb附加到一个进程,并且在它的内存布局中有一个文件和行号,我想要它的内存地址。如何获取文件x中第n行的内存地址?这是在Linuxx86上。 最佳答案 (gdb)infolinetest.c:56Line56of"test.c"startsataddress0x4005aeandendsat0x4005ba.此外,对于python,您可以使用来自Symbol-Tables-In-Python这目前需要来自cvs的最新版本的gdb,但我想将在7.5中普遍可用(gdb)pyx=gdb.find_pc_line(gdb.dec
#include#includeexternchar**environ;intmain(intargc,char*argv[]){inti=0;while(environ[i]){printf("%s\n",environ[i++]);}return0;}这是我的操作:(gdb)n8printf("%s\n",environ[i++]);(gdb)penviron[i]Cannotaccessmemoryataddress0x0(gdb)nLOGNAME=root7while(environ[i]){如你所见,printf可以打印出environ[i],但是penviron[i]给我不
#include#includeexternchar**environ;intmain(intargc,char*argv[]){inti=0;while(environ[i]){printf("%s\n",environ[i++]);}return0;}这是我的操作:(gdb)n8printf("%s\n",environ[i++]);(gdb)penviron[i]Cannotaccessmemoryataddress0x0(gdb)nLOGNAME=root7while(environ[i]){如你所见,printf可以打印出environ[i],但是penviron[i]给我不