当我使用gdbxxx加载时,结果如下:dl-debug.c:74:Nosuchfileordirectory.dl-debug.c:74:Nosuchfileordirectory.dl-debug.c:74:Nosuchfileordirectory.dl-debug.c:74:Nosuchfileordirectory.dl-debug.c:74:Nosuchfileordirectory.很多,我该如何解决?我已经在网上搜索过了,但所有的答案都不是解决方案。有些人可能会推荐apt-getsourceglibc或apt-getinstalllibc-source,但没有帮助。我试图
我在使用最新的gdb时遇到问题,所以我想使用旧版本。我找到了gdb存档here,但我该如何编译/安装其中之一以便可以使用它?根据manual,首先配置:$./configurecheckingbuildsystemtype...x86_64-unknown-linux-gnucheckinghostsystemtype...x86_64-unknown-linux-gnucheckingtargetsystemtype...x86_64-unknown-linux-gnu[...]configure:creating./config.statusconfig.status:creati
在我的Linux系统中,我正在编写一个在运行时动态加载一些.so库的程序。是这样的:可执行程序在开始运行时,会在某个目录下搜索,然后加载该目录下的所有.so文件。请注意可执行文件和.so是独立构建的,可执行文件的构建不链接到.so文件。我的问题是:在我运行附加了GDB的程序(因此所有.so库都已加载)之后,我似乎能够在.so文件中的代码上设置断点(GDB提示我这个断点设置在一个共享库中),但这个断点实际上从未中断过。我应该如何使这些断点真正起作用?在调试session期间,我在正确的位置提供了所有源代码,并且-g选项处于打开状态。我还删除了编译时的-O2优化。
在ubuntu上的ionicv3项目中使用ionicserve...它给出以下错误-Error:NodeSassdoesnotyetsupportyourcurrentenvironment:Linux64-bitwithUnsupportedruntime(64)Formoreinformationonwhichenvironmentsaresupportedpleasesee:https://github.com/sass/node-sass/releases/tag/v4.5.3atmodule.exports(/usr/share/tour/node_modules/node-
我们有一个非常大的项目。(大约200'000个文件)当项目退出时,它在全局变量的解构中崩溃。但是我们找不到变量定义的地方。有人知道如何找到全局变量在哪里吗? 最佳答案 Butwecan'tfindwherethevariabledefined.大概,您想找出哪个全局变量导致了问题。如果你知道它是哪一个,你可以使用grep,或GDBinfovariablefoobar找到它。让我们考虑一个例子。catfoo.cc#include#includeusingstd::string;stringfoo("foo");stringbar("b
我正在尝试查看导致内存泄漏的进程,并转储导致它的堆以查看问题所在。我在gdb中使用哪个命令来设置内存泄漏并检查堆?我试过:(gdb)check-leakscheckpoint:can'tfindforkfunctionininferior.(gdb)helpinfoheapUndefinedinfocommand:"heap".Try"helpinfo".(gdb)helpinfoleaksUndefinedinfocommand:"leaks".Try"helpinfo". 最佳答案 正如人们指出的那样,Valgrind是您的答案
有没有可能让gdb自动找到对应的可执行文件?我提取了调试符号并将它们放在/usr/lib/debug/.build-id/目录中。当我使用gdb/usr/bin/executablecore启动gdb时,一切正常。可执行文件和所有共享库的所有调试符号都会自动加载,因为gdb知道构建ID并自动加载它。$gdb/usr/bin/executablecoreGNUgdb(GDB)7.0.1-debianCopyright(C)2009FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware
我正在编写一个用于核心转储分析的工具,我想打印的一件事是估计转储时进程使用了多少虚拟内存。这些核心转储可能是由于崩溃造成的,也可能是使用gcore手动获取的(例如,用于调整大小)。本质上,我想打印PSVSZ列的等效项。我研究了readelf和gdb,并专注于后者。例如,我有一个简单的程序挂起,我在PS中看到:$psauxwww|grepa.outUSERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMANDroot166440.00.04108472pts/5S+13:510:00./a.out我使用gcore获取一个核心,此时它使用4,206,592字节
为什么下面的程序在执行时没有崩溃,而是在GDB中出现segfault而崩溃?在32位x86(Athlon64,如果重要的话)上使用GCC4.5.2编译。#include#includeintmodify(void){__asm__("mov$0x41414141,%edx");//Strayvalue.__asm__("mov$0xbffff2d4,%eax");//Addr.ofretpointerforfunction().__asm__("mov%edx,(%eax)");}intfunction(void){modify();return0;}intmain(intargc,c
代码(m1.cpp):#includeusingnamespacestd;intmain(intargc,char*argv[]){coutGDB版本:GNUgdb(GDB)7.6.2构建使用:g++-gm1.cpp命令行历史:(gdb)bmainBreakpoint1at0x40087b:filem1.cpp,line6.(gdb)rStartingprogram:.../a.outProgramreceivedsignalSIGSEGV,Segmentationfault.0x00002aaaaaac16a0instrcmp()from/lib64/ld-linux-x86-64.