我的进程崩溃了,我有一个核心转储。我看到进程在运行类似于以下代码时崩溃了:classfather{public:voidvirtualrunVirtualFunc()=0;voidfunc(){runVirtualFunc();//...crashhere...THISISTHEPLACEINEEDTOKNOWWHOISTHEINHERITOR(soIcouldanalyzewhich"runVirtualFunc"ran).}virtual~father(){}};classson1:publicfather{public:voidvirtualrunVirtualFunc(){/*
我的问题是关于使用gdb/gdbserver在嵌入式arm处理器上远程调试应用程序。我可以调试应用程序本身,但应用程序动态链接到实现内部通信协议(protocol)的共享库。我希望能够在共享库函数中设置断点,因此尝试找出一些设备发现问题。我已经确定库是用调试符号编译的,并由主机端的gdb加载,我可以列出库中的函数,甚至可以设置断点,但是一旦我尝试运行应用程序,我就会得到一个错误消息的效果:无法插入断点X。访问内存地址[Hex地址]时出错:输入/输出错误。其中X是gdb中的断点编号,[Hexaddress]是一个非常小的有效地址。我在目标和主机上都使用了新库,但是通过nfs挂载在目标上通
我的问题是关于使用gdb/gdbserver在嵌入式arm处理器上远程调试应用程序。我可以调试应用程序本身,但应用程序动态链接到实现内部通信协议(protocol)的共享库。我希望能够在共享库函数中设置断点,因此尝试找出一些设备发现问题。我已经确定库是用调试符号编译的,并由主机端的gdb加载,我可以列出库中的函数,甚至可以设置断点,但是一旦我尝试运行应用程序,我就会得到一个错误消息的效果:无法插入断点X。访问内存地址[Hex地址]时出错:输入/输出错误。其中X是gdb中的断点编号,[Hexaddress]是一个非常小的有效地址。我在目标和主机上都使用了新库,但是通过nfs挂载在目标上通
我的断点指向一个变量。(指向某处。我可以弄清楚某处是堆还是堆栈?)有什么方法可以找到堆栈的开始和结束位置?有什么办法可以找到堆的开始和结束位置? 最佳答案 使用infoprocmappings获取关于内存布局的/proc信息。 关于如果变量属于堆或堆栈,我可以通过GDB找到吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5247037/
我的断点指向一个变量。(指向某处。我可以弄清楚某处是堆还是堆栈?)有什么方法可以找到堆栈的开始和结束位置?有什么办法可以找到堆的开始和结束位置? 最佳答案 使用infoprocmappings获取关于内存布局的/proc信息。 关于如果变量属于堆或堆栈,我可以通过GDB找到吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5247037/
我尝试在x86_64suselinux上远程调试32位应用程序,但出现“远程寄存器格式错误”错误。我启动gdbserver监听端口12345(gdbserverlocalhost:12345my_prog)这是错误:$gdbGNUgdb6.6Copyright(C)2006FreeSoftwareFoundation,Inc.GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeitand/ordistributecopiesofitundercertainconditions.Typ
我尝试在x86_64suselinux上远程调试32位应用程序,但出现“远程寄存器格式错误”错误。我启动gdbserver监听端口12345(gdbserverlocalhost:12345my_prog)这是错误:$gdbGNUgdb6.6Copyright(C)2006FreeSoftwareFoundation,Inc.GDBisfreesoftware,coveredbytheGNUGeneralPublicLicense,andyouarewelcometochangeitand/ordistributecopiesofitundercertainconditions.Typ
我目前正在编写PythonGDB脚本。问题是它必须与GDB7.1兼容。所以我首先为GDB7.3.1编写脚本并使用以下函数接收gdb命令的输出(GDB7.3.1):myvar=gdb.execute("infotarget",False,True)这个函数的最后一个参数是它应该以字符串形式返回结果(这很有意义;否则我为什么要执行这样的命令;))在GDB版本7.1中,虽然最后一个参数似乎是isn'tavailable因此这一行(GDB7.1):myvar=gdb.execute("infotarget",False)返回无。是否有机会检索此命令的输出?我已经尝试将我的python脚本的标准
我目前正在编写PythonGDB脚本。问题是它必须与GDB7.1兼容。所以我首先为GDB7.3.1编写脚本并使用以下函数接收gdb命令的输出(GDB7.3.1):myvar=gdb.execute("infotarget",False,True)这个函数的最后一个参数是它应该以字符串形式返回结果(这很有意义;否则我为什么要执行这样的命令;))在GDB版本7.1中,虽然最后一个参数似乎是isn'tavailable因此这一行(GDB7.1):myvar=gdb.execute("infotarget",False)返回无。是否有机会检索此命令的输出?我已经尝试将我的python脚本的标准
它在http://sourceware.org/ml/gdb/2007-06/msg00360.html中提到之前。但似乎没有人真正实现过这种想法。实现这一点有什么障碍吗?我的要求如下:能够插入任何elf二进制可执行文件(例如使用LD_PRELOAD)二进制文件可以是多线程可执行文件二进制文件可能链接到包含主要功能的库这应该适用于x86以外的各种cpu架构(至少是MIPS、ARM、PPC)因此,如果已经有这样的解决方案,我想要一个链接,但如果还没有,我想知道为什么它还没有作为轮子实现。可能只是没有人不需要它...但我认为这对于作为标准准备非常有用。除了将代码放在一起之外,任何技术或政治