草庐IT

runtime-gdb

全部标签

linux - GDB 不会加载源文件

我正在使用arm-linux-gcc通过-g在主机(debiani386)上编译一个简单的C文件。然后将a.out文件复制到目标(arm,uclibc)电脑上。​​运行a.out–一切正常。使用GDB(target)gdba.out并列出源代码,它显示Nosuchfileordirectory。事实一直如此?如果我将1.c文件复制到目标,然后使用list命令列出源代码。我的问题:GDB一直如此,还是有其他我可以控制的选项?您对调试程序有什么建议吗?一些信息可能有用:源代码1.c文件:#include#include#include//mainfunctionintmain(void){

c++ - GDB 错误 : Selected architecture i386 is not compatible with reported target architecture i386:x86-64

有谁知道这个错误是什么意思?我在Linux机器上使用Netbeans8.0、gdb7.8.1。两天前一切都很好,然后当我开始调试时突然开始出现这个错误,我不知道这是什么意思。到目前为止,我正在尝试清理和重置我能想到的一切:重新安装netbeans、清理所有本地文件、再次rebase我的代码、取消设置所有断点等等。谁能帮我理解这个错误是什么意思?我从未设置过这些断点,Netbeans从哪里获取它们?提前致谢,雷切尔编辑所以现在我有更多的细节:当我尝试直接使用GDB调试我的应用程序时,没有netbeans我收到以下错误:Startingprogram:....warning:Selecte

c - GDB 没有那个文件或目录

我正在学习OpenSecurityTraining中的这些类(class).我已经到了实验室部分,我必须在CMU炸弹上训练自己。他们提供了一个x86_64编译的CMUBomb,你可以在这里找到它来训练:CMUBombx86-64最初来自CMULabsforComputerSystems:AProgrammer'sPerspective(CS:APP)1stedition的32位炸弹.我有一个虚拟化的64位ElementaryOS发行版,我在其中使用GDB毫无问题地反汇编了CMUBomb。现在,我有一个64位Ubuntu14.04LTS(未虚拟化),当我尝试重现我在ElementaryO

c++ - gdb 步骤没有按预期工作

我正在Linux上调试静态多线程x86-64C++应用程序。我可以在函数上设置断点并停止,我可以一步一步地遍历函数体。但是当我尝试进入另一个函数时,gdb并没有在它开始时停止,它似乎只是继续执行。当我中断程序执行时,gdb进入中断状态并变得不可用:(gdb)btTargetisexecuting.(gdb)cContinuing.Cannotexecutethiscommandwhiletheselectedthreadisrunning.(gdb)作为解决方法,我可以多次使用stepi而不是step,stepi可以按预期工作。这种行为的原因可能是什么?除了使用stepi之外还有什么解

c - 我如何从源代码静态构建 GDB?

我已经下载了gdb-6.5.bz2.tar。解压这个文件。我写的:LDFLAGS=-静态./配置但结果我得到了一个gdb,它需要一个so文件,例如:ncurses.so.5libc.so.0等我如何静态构建? 最佳答案 Thismessage似乎暗示正确的用法是$makeLDFLAGS=-static这似乎令人惊讶。不幸的是,它还说它构建失败,并且没有后续行动。消息仍然是1999年的,所以一切可能都变了,也许今天的正确方法是按照你的方式去做。 关于c-我如何从源代码静态构建GDB?,我们

linux - 如果出现错误,gdb 将在命令文件中停止。尽管有错误如何继续?

我的真实gdb脚本在分析核心文件时尝试取消引用指针并得到“源命令文件中的错误:无法访问地址处的内存”,然后我的gdb脚本停止。我想要的只是不停地继续执行我的gdb脚本。可能吗?这是演示我的问题的测试程序和测试gdb脚本。在这种情况下,指针具有NULL值,但在实际情况下,指针可能没有null无效值。这是测试C程序:#includestructmy_struct{intv1;intv2;};intmain(){my_struct*p;printf("%d%d\n",p->v1,p->v2);return0;}这是一个测试gdb脚本:>catanalyze.gdbpp->v1q这是问题的演示

python - 如何在tui模式下自动刷新gdb?

如果我使用gdb-tui调试文件,源代码窗口总是会变得一团糟。所以每次我点击enter我必须立即输入ctrl+L来解决这个问题,这就是gdb刷新窗口。我正在使用gnuscreen处理tty。有没有可能在tui模式下自动刷新gdb?如果gdb没有这种能力,Python可能是一个解决方案,因为gdb能够获取Python文件,但我不了解Python。这个Python片段在Bash中运行良好,但在gdb中运行不正常:importsysr="\033[2J"#hereItrytoemulate[ctrl-L]t=""while1:i=sys.stdin.read(1)t=t+iifi=='\n'

python - gdb 用 python 打印漂亮的递归结构

我对Python不是很熟悉,我只是在发现GDBpython脚本功能;我的问题的动机是增强MELTmonitor中值的GDB打印。稍后将连接到GCCMELT.但这里有一个更简单的变体。我的系统是Linux/Debian/Sid/x86-64。GCC编译器是4.8.2;GDB调试器是7.6.2;它的python是3.3我想调试一个带有“discriminatedunion”类型的C程序://filetiny.cinthepublicdomainbyBasileStarynkevitch//compilewithgcc-g3-Wall-std=c99tiny.c-otiny//debugwi

c++ - 使用 GDB 调试模板

我的gdb是GNUgdbRedHatLinux(6.3.0.0-1.162.el4rh),我无法调试模板。如何使用此调试器调试模板? 最佳答案 如果您的问题只是关于在代码中放置断点。这是一个小片段例如:main.cpp#includetemplatevoidcoin(Tv){std::coutclassFoo{public:Tbar(Tc){returnc*2;}};intmain(intargc,char**argv){Foof;coin(f.bar(21));}编译g++-O0-gmain.cppgdb./a.out(gdb)b

linux - gdb -i=mi 是什么意思?

当从emacs启动gdb时,emacs说gdb应该启动为gdb-i=mi选项-i未在gdb手册页中定义。如果从命令行使用选项-i=mi调用gdb,它就可以工作。所以它必须特定于gdb。-i选项的文档在哪里? 最佳答案 gdb-i=mi等同于gdb--interpreter=mi。简而言之,--interpreter=mi使gdb呈现面向机器的文本界面,而不是没有它时的面向人的命令提示符。Emacs的gud缓冲区解析此接口(interface)的输出,并向您呈现类似于普通gdb接口(interface)的内容。--interprete