草庐IT

runtime-gdb

全部标签

linux - Linux _x86_64 命令信息中的 GDB 调试

我正在尝试使用gdb在linux中调试我的程序。我想验证Linux中特定帧的寄存器值,为此我运行了两个命令;信息注册和信息框架我发现“inforeg”命令为不同的寄存器显示的值不同于在这种情况下为命令“infoframe”的保存寄存器显示的值。寄存器rbp、rsp、rip对我来说很重要。这些命令有什么区别?当它说“已保存的寄存器”时,这是什么意思以及这些寄存器保存在什么位置? 最佳答案 您想在执行信息注册之前切换到右框架。然后你会发现实际上两者之间没有区别。希望对您有所帮助。亚历克斯。

c - gdb 不接受用户输入

我目前正在关注thisvideo关于如何使用汇编和gdb,使用thisCprogram,但我遇到了问题。下面是我编译和运行gdb时所做的:chiggins@host:~/assem$gcc-ggdb-oSimpleDemoSimpleDemo.cchiggins@host:~/assem$gdb./SimpleDemoGNUgdb(Ubuntu/Linaro7.4-2012.04-0ubuntu2)7.4-2012.04Copyright(C)2012FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisis

linux - gdb 反向步进 - Linux 不支持?

(gdb)reverse-stepTargetchilddoesnotsupportthiscommand.这是在Linux2.6.18中内核不支持吗?我需要一个特殊的gccarg吗?gcc--versiongcc(GCC)4.1.220080704(RedHat4.1.2-52) 最佳答案 我不是专家,但看来您可能忘记启用gdb记录。(gdb)record(gdb)continue(gdb)reverse-continueContinuing.例如,这对我有用Breakpoint1,main(argc=1,argv=0x7ffe6

c - gdb 便利变量 strcat

我想使用方便的变量来收集事物列表。我找不到任何关于便利变量的字符串连接的信息。所以我尝试了一些东西。检查一下:(gdb)set$foo="foo"(gdb)p$foo$45=0x84c7fd8"foo"(gdb)callstrcat($foo,"bar")$46=139231192(gdb)p$foo$47=0x84c7fd8"foobar"好吧,所以我更努力地让它崩溃了:(gdb)set$foo="foo"(gdb)set$bar="blue"(gdb)p$foo$48=0x85d9100"foo"(gdb)p$bar$49=0x83cd1e8"blue"(gdb)callmemse

c - gdb 远程调试。实现一个伪造的 gdbserver stub 。经过多次请求和响应,得到警告 :invalid remote reply

为了项目的需要,我写了一个简单的javasocket程序来实现一个“假的”gdbserverstub。因此,支持最少数量的gdbRSP命令:g、G、m、M、c和s。对于其他命令,只需响应“$#00”。根据gdb的手册,这会告诉gdb“服务器”不支持其他命令。我使用EclipseCDT来帮助我进行调试。在调试配置中,我选择了c/c++远程应用程序,并在localhost:10000上使用TCP设置调试器连接,我的java程序将在此处进行监听。首先,gdb发送qSupported、Hg0、qTStatus、?和qC等命令。对所有命令的响应都是“$#00”,告诉gdb“服务器”不支持这些命令

c - gdb调试(带断点): Gtk-WARNING **: Invalid text buffer iterator

我如何使用gdb调试(并到达某个断点)我的错误程序(使用GTK3)显示:(monimelt:161):Gtk-WARNING**:Invalidtextbufferiterator:eithertheiteratorisuninitialized,orthecharacters/pixbufs/widgetsinthebufferhavebeenmodifiedsincetheiteratorwascreated.Youmustusemarks,characternumbers,orlinenumberstopreserveapositionacrossbuffermodificati

linux - GDB 在事后分析中显示了错误的线程

我遇到了GDB的奇怪行为。当运行内核的事后分析时,从c++中的高度多线程应用程序转储,调试器命令btwherethreadinfo永远不要告诉我程序实际崩溃的线程。它一直向我显示线程号1。因为我习惯于在其他系统上看到它,所以我很好奇这是否是GDB中的错误,或者它们是否以某种方式改变了行为。谁能指出我的解决方案,搜索75个线程是PITA,只是为了找出调试器已经知道的东西。顺便说一句,我在DebianSqueeze(6.0.1)上,GDB的版本是7.0.1-debian,系统是x86,完全是32位的。在我较旧的Debian(5.x)安装中,调试一个由完全相同的源转储的核心,为我提供了正确线

c - GDB调试中的问题

我用GDB调试一个C程序,但是我发现GDB执行了一些代码两次。例如,....stream_t*s=stream_CommonNew(VLC_OBJECT(p_access));stream_sys_t*p_sys;if(!s)returnNULL;s->p_input=p_access->p_input;s->psz_path=strdup(p_access->psz_path);....GDB调试,292stream_t*s=stream_CommonNew(VLC_OBJECT(p_access));Missingseparatedebuginfos,use:debuginfo-i

linux - gdb 在另一个进程的上下文中运行?

我只想了解gdb(或任何其他调试器)如何修改另一个进程地址空间中的内存?我们有一个正在运行的进程,我们附加到它attachpid从这里我们可以修改“附加进程”地址空间中的内存(变量)。这怎么可能。是什么阻止了任何其他进程(不是调试器)做同样的事情。操作系统是否提供特殊的门,调试器可以使用它来查看/修改不同进程的地址空间?还是我理解错了。附加后进程是否在调试器的上下文中运行?如果是这样,这种情况下的变化是如何发生的?如果发生这种情况,我可以假设这将是一个写副本吗?如果是这样,调试器将有不同的内存和修改后的数据。但是一旦我们从gdb修改了一些内存并从进程中分离出来,进程将继续看到修改后的数

使用 GDB 进行 Python 内存调试

我们有一个使用OpenSSL的Python绑定(bind)的Linux应用程序,我怀疑它会导致随机崩溃。有时,我们会看到它崩溃并显示以下消息:PythonFatalError:GCObjectalreadytracked这似乎是库方面的编程错误,或者是内存损坏的症状。给定一个核心文件,有没有办法知道它执行的最后一行Python源代码?或者如果它附加在GDB中?我意识到它可能都是编译的字节码,但我希望有人可能已经处理过这个问题。目前它在跟踪模块处于事件状态的情况下运行,我们希望它会再次发生,但可能需要很长时间。 最佳答案 是的,你可以