Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
 Gdb_IT技术博客_编程技术问答 - 「Fatal编程技术网」

在线程切换时暂停gdb

每次执行的pthread发生变化时,有没有办法让gdb停止 假设我有两个POSIX线程(线程A和线程B)正在运行,我希望gdb在线程A被挂起而线程B继续执行时停止(反之亦然) 我希望gdb在线程A被挂起并且线程B继续执行时停止 你的问题假设一台单核计算机,这在当今极为罕见 如果您有一个多核CPU,那么a和B将同时执行,您的问题毫无意义 即使假设您是在单核CPU上执行,您所要求的功能(我预计)也基本上是无用的:一个典型的多线程程序在到达任何“有趣”的代码之前会在两个线程之间切换数万次。你肯定不想继

gdb给了我无限的“爱”;程序接收信号SIGTSTP“;当我试图恢复时

我在gdb中运行vlc,并使用^Z中断它(因为^C不工作)。在检查了一些堆栈帧和变量之后,我尝试使用“cont”来恢复程序,但它一直给我带来了错误 Program received signal SIGTSTP, Stopped (user). [Switching to Thread 0x7fffd8d8e700 (LWP 19285)] 0x00007ffff700247c in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libp

GDB硬件断点don';无法使用远程调试

我使用GDBServer使用ARM11 CPU进行远程调试。软件断点运行良好,但我们使用“hbreak test.c:5”来设置硬件断点,CPU永远不会停止 GDB版本:7.3.1 目标CPU:ARM11 操作: arm-linux-gdb ./main (gdb) target remote 192.168.0.1:2345 (gdb) hbreak test.c:5 => HW breakpoint, it doesn't work. but if change to "b tes

如何将gdb中的$eip映射到objdump-d的输出?

我有一个不完整的stacktrace,它停在一个已知的库(linux i686体系结构)上。为了确定上次调用的函数,我尝试将$eip映射为gdb的输出,映射到“objdump-dlibrary.so”生成的文件中的地址。 我想我可能能够使用gdb中“info shared”的From地址输出以及$eip来计算偏移量,然后我可以将其转换为objdump-d输出的反汇编文本部分的偏移量? 不确定这种方法是否合理,但在一个带有共享库的简单测试工具应用程序中尝试它并不能在正确的函数中为我提供地址。 非常

使gdb在“全部应用”操作上显示线程名称

我正在调试一个有很多线程的应用程序,所以我用prctl命名了它们。这在gdb的info threads选项中非常有效,但如果thread*apply all操作也显示了这一点,那就更好了。有没有办法强迫gdb这么做 (gdb) info threads Id Target Id Frame ... 3 Thread 0x7ffff6ffe700 (LWP 30048) "poll_uart_threa" 0x00007ffff78eb823 in sele

使用libe工具gdb

我正在从事一个使用GNU自动工具的项目,因此为了使用gdb调试代码,我在libtool中运行gdb: libtool --mode=execute gdbtui foobar 是否可以在不必退出gdb/libtool并重新启动的情况下重新加载项目的修改版本?很难看出您到底在问什么,但我希望我理解正确 是的,您通常可以从gdb中再次运行调试过的命令,只要它首先是用gdb启动的。事实上,这是gdb的常见工作流。在一个窗口/选项卡/窗格中使用它来调试您的东西,在另一个窗口中修复代码,在第三个窗口中重

如何在gdb中设置rsp?

我试图设置rsp,以便可以从中看到调用堆栈: (gdb) set $rsp = 0x3fa4fefde930 Left operand of assignment is not an lvalue. 这很奇怪,因为我认为rsp应该能够设置 是否有任何可能导致此问题,以及如何避免此问题?也许您正在尝试从最上面的帧以外的帧设置$rsp?尝试先切换到第0帧: (gdb) select-frame 0 (gdb) set $rsp = 0x3fa4fefde930 您肯定能够设置$rsp。这种情况是

在GDB中如何打印0xc(%rsp)?

我试图调试一个项目的一些代码,我遇到了这一行cmpl$0x7,0xc(%rsp)。什么是0xc(%rsp),如何打印它 什么是0xc(%rsp) 内存位置高于当前堆栈指针12字节。正在将该位置的值与7进行比较 我怎么打印呢 什么是0xc(%rsp) 内存位置高于当前堆栈指针12字节。正在将该位置的值与7进行比较 我怎么打印呢 看一看:看一看: (gdb) print $rsp+0xc

带有GDB和OpenOCD错误的STM32F4xx

我正在使用GCC、GDB和OpenOCD在STM32F4Discovery板上开发一个程序 我可以很好地编译所有内容,但是当我开始调试时,程序会直接转到HardFault处理程序,而不是Reset_处理程序 此外,我在写flash时经常遇到问题。我通常需要两次尝试才能在flash中成功编写程序 有没有其他人曾经在这款或其他cortex M4处理器上出现过这种问题 我已经在STM32F1上遇到了同样的问题,我使用的是gdb和OpenOCD,调试器在开始调试时直接跳转到硬故障处理程序中。在我的例子中

Gdb 每当我按下control+;C

我正在远程调试Stellaris Launchpad。我使用OpenOCD连接到stellaris,然后将GDB连接到OpenOCD提供的服务器。我使用开放式芯片调试器0.10.0-dev-00002-g79fdeb3(2015-07-09-23:28)。GDB是来自arm gcc none eabi的版本,即4_9-2015q1版本。 我这样调用openOCD: /usr/local/bin/openocd --file \ /usr/local/share/openocd/scripts/b

Gdb 如何在coredump分析期间映射文件

我必须分析一个垃圾堆。 我的流程的大多数数据都包含在映射文件中。 当我想访问该数据时,gdb说它无法访问该数据,因为它没有映射该文件。 您知道如何使gdb映射该文件以访问数据吗 如何使gdb映射该文件以访问数据 我不相信GDB有任何命令可以做到这一点 您可以将数据文件包装到一个对象文件中,然后使用添加符号文件foo.o。您可以使用objcopy--addsection来执行此操作 在Linux上,您还可以将核心转储配置为包含只读映射(通常排除此类映射以使core更小),这将使任何特殊步骤变得不必

Gdb 外壳代码未正确执行

我正在努力解决这个问题。 这是一本书。 它把返回地址放在后面,我试着把它放在前面,在数组中。 我试过外壳代码,它很有效 看起来一切正常,执行跳转到外壳代码,但我在外壳代码结束后出现了一个分段错误,并且没有生成外壳。我不知道为什么,在gdb中,并非所有外壳代码指令都正确显示。 例如,at0xbffff690应为mov%esp,%ecx非cwtl。也许这就是问题所在?为什么会这样 编辑:由于数组地址在gdb外部启动时会略有不同,因此我们需要一个nop底座。因此,我的方法可能不起作用,因为数组大小太小

yocto:Add.gdbinit在构建gdb时在构建中

在构建gdb时,我试图将一个.gdbinit文件添加到文件系统的/home/root中 我制作了这个bbappend文件:gdb_8.0.bbappend 但是,在构建时,我遇到以下错误: ERROR: gdb-8.0-r0 do_package: QA Issue: gdb: Files/directories were installed but not shipped in any package: /home /home/root /home/root/.gdbinit Pl

从gdb调用read

我想在调试时读取标准输出,但我一直返回-1。以下是我的gdb会话的一部分: (gdb) call fflush(stdout) $16 = 0 (gdb) p/x malloc(50) $17 = 0xb7fff2e0 (gdb) call read(stdout, (void *) 0xb7fff2e0, 49) $19 = -1 我还假设,如果标准输出文件中没有任何内容,调用read应该返回零。我会从stderr中读取更多信息,但这当然也会失败。您正在调用read,它需要一个文件描述符,

Gdb ddd在启动时挂起

以前有人问过这个问题,我看到ddd新闻组的bug报告,但建议的解决方案都不适合我 它会出现,但当您尝试打开一个文件时,它会挂起消息“等待GDB准备就绪” 另一些人也报道了一个至关重要的事实,那就是它对某些用户来说效果很好,而对其他用户来说则不然。我比较了环境,没有发现任何显著的差异。任何建议都将不胜感激。删除~/.ddd接缝以解决此问题。我认为删除.ddd中的init文件也将解决此问题。无需删除整个.ddd文件夹。我试过了,成功了 此外,如果广泛修改ddd默认选项(如按钮和图形显示),则可以将i

如何要求GDB仅在函数结束后中断它';什么叫特定时间?

例如,我的程序中有一个函数NamespaceA::ClassB::FunctionC()。我知道我可以通过“breaknamespacea::ClassB::FunctionC”让GDB在这里中断。但是,如果我只想在调用这个函数100次之后,GDB在那里中断,我该怎么办呢 我认为一个解决方案是在程序中再添加一个变量,然后在GDB中使用“break…if cond”命令。但我能在不向程序中添加变量的情况下实现同样的功能吗 多谢各位 (gdb) continue 100 我们应该这样做 (gdb)

GDB指令指针

这是命令信息帧的GDB输出 Stack level 1, frame at 0x7fff5fbffba0 rip = 0x100000ee4 in main (scc150_ex5.c:9); saved rip 0x100000eb4 caller of frame at 0x7fff5fbffb80 source language c. Arglist at 0x7fff5fbffb98, args: Locals at 0x7fff5fbffb98, Previous fram

有没有办法让GDB跳过/忽略指令?

我正在GDB中运行一些汇编代码,试图调试我的程序,我想看看如果我完全忽略一条指令会发生什么,有没有办法做到这一点?(跳过它到下一行而不执行它)而不必编辑源代码并注释掉函数,然后重新编译 有办法做到这一点吗 当然:jump*0x1234将跳转到地址0x1234处的指令 跳过它到下一行而不执行它 “下一行”和程序集调试很少同时进行。正如答案所示,您也可以跳过一行。给出了正确的解决方案。该命令是jump。

Gdb dprintf与break+;命令+;继续?

例如: dprintf main,"hello\n" run 生成与以下内容相同的输出: break main commands silent printf "hello\n" continue end run 使用dprintf是否比使用命令有明显的优势,例如速度要快得多(如果是,原因是什么?),或者具有一些不同的功能 我认为dprinf在理论上可以更快,因为它可以在理论上编译和注入带有机制的代码 或者它主要是一个方便的命令 来源 在7.9.1源代码中,breakpoint.c

Gdb 关于结构类型stat和系统调用函数,如S_ISREG

因此,我试图理解内置函数,如S_ISREG、S_IXUSR等。我很难理解像这些函数返回的是什么,或者它们通常做什么,以及它们如何处理系统调用,比如stat,这是(从我读到的)一个系统结构 太棒了,太酷了。但我不明白的是这些变量或函数返回什么?我读到它们都互相帮助,但是st->st\u模式返回的是什么输出,使函数S\u ISREG有效 总而言之: 像S_ISREG这样的函数接收什么,它们返回什么?struct type stat包含哪些内容使其能够被S_ISREG验证使用? PS:我在下面找到了这

GDB不';t以有符号十进制打印输出

我正试着用gdb做一些数学题。看看这两个转换 gdb$ p/x -8 $8 = 0xfffffff8 gdb$ p/d 0xfffffff8 $9 = 4294967288 为什么在第二种情况下,gdb不返回-8而不是数字的无符号值? 事实上,p/d和p/u gdb$ p/u 0xfffffff8 $10 = 4294967288 我找不到这方面的文档,但gdb中整数值的默认类型似乎是64位带符号整数。见此: (gdb)p/d 0xFFFFFFFFFFF8 $7=-8 因此它将0xFFFFF

GDB:重新运行程序,直到出现故障,并在运行过程中回答提示 问题

我试图自动调试我正在审查的一个程序,其中有一个小的,但真正的机会(即:10000机会中的一个)由于已知的错误而发生崩溃。我和另一位工程师争辩说,这已经够严重的了,需要解决,所以我需要实际导致崩溃发生,以证明花时间修复它是合理的。为了加快测试速度,我计划编写一个脚本,让应用程序在GDB中运行几天(如果需要的话),直到崩溃 前期研究 ,但我需要将问题扩展一点。因此,我知道我可以通过以下方式反复运行程序,直到程序崩溃: 问题 我需要做的是找出如何发出某些命令。在我的程序运行几秒钟后,它会要求

在eclipse中渲染漂亮打印时,有人有gdb挂起的解决方法吗?

我已经更新到eclipse neon,我svn更新到最新版本 svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python,我刚刚构建了GDB7.12.1,所有这些最新的东西都没有用 我有漂亮的打印所有工作,但每隔一段时间,试图更新变量视图,gdb将挂起。实际上,它使cpu旋转。我将gdb连接到gdb(因为我觉得这个想法很有趣),并获得了大量堆栈跟踪,它们都意味着找不到打印机并反复重试。有人见过这个或者有解决办法吗?不清楚是哪台打印机(如果是单台打印机)

gdb不将sqrt(-1.0)打印为NaN

我检查了sqrt(-1.0)是否返回NaN()。在gdb中,它不返回NaN (gdb) p/x sqrt(-1.0) $10 = 0xe53a86a0 (gdb) p sqrt(-1.0) $11 = -449149280 GDB调用不同的sqrt吗?我使用的是GDB7.6,看起来gdb无法访问合适的调试信息。因此,它假定sqrt是一个返回int的函数: (gdb) ptype sqrt type = int () 您可以使用强制转换告诉GDB正确的类型: (gdb) print ((dou

使用和不使用GDB时环境布局的差异

最近,我一直在研究CTF挑战,这些挑战要求攻击者在环境中使用外壳代码。在禁用ASLR的情况下,可以仅依赖shell环境与可利用进程环境之间的细微差异(例如,仅由于二进制名称差异而产生的差异)。然而,GDB(和R2)将对环境进行轻微的更改,这使得这非常困难,因为在不调试时环境变量会发生轻微的变化 例如,GDB似乎至少添加了环境变量行和列。但是,可以通过如下方式调用GDB来删除这些内容: gdb -ex 'set exec-wrapper env -u LINES -u COLUMNS' -ex '

自动gdb:在每次调用函数puts时显示回溯

我想调试一些程序。我需要对某个函数(例如puts)的所有调用进行回溯 现在我使用这样的gdb脚本: set width 0 set height 0 set verbose off break puts commands 1 backtrace continue end 但首先是 gdb --batch --command=script --args ./some_program arguments 给出一个错误: Function "puts" not defined. Make brea

Gdb 在剥离的ELF可执行文件中设置断点

我有一个ELF 32位动态链接的剥离文件,我希望调试它。尝试在地址处设置断点时,会显示一条消息,说明符号表未加载 我的问题是: 当你说一个ELF文件被剥离时,到底发生了什么 如何剥离ELF文件 是否可以以某种方式重建符号表 不可能在剥离的可执行文件上的gdb中设置断点吗 剥离ELFs是使用gnu binutils工具条从条带手册页完成的: GNU strip从中丢弃所有符号 对象文件objfile。名单 目标文件可能包括归档文件。在 必须至少提供一个对象文件 当你说一个ELF文件被剥离时,到底发

mdb&x27;s替代gdb';谁来接球?

我不是gdb和mdb方面的专家,但我知道:- `(gdb) catch throw` 这将在引发异常时中断 在mdb中是否有任何类似的命令会在抛出异常时中断?否,这本身并不存在;这是因为在Solaris上,这取决于您使用的编译器和/或C++选项的编译选项(以及如何抛出异常)。 mdb没有试图了解所有这些,Solaris上的gdb也没有(如果编译它,catch-throw将无法使用旧的或新的Sun CC二进制文件) 您最好的选择是找出“C++ABI挂钩”是什么,即在throw()上

gdb:按名称搜索函数以设置断点

我试图找出程序的哪个部分打印到标准输出 我可以使用如下命令设置断点: b std::ostream::operator使用“同事提供的信息函数回答:快速回答:使用objdump、c++filt和grep找到GDB需要的完整定义。$objdump-t libMyLib.so | c++filt | grep'BarAbstract.*Baz'0000d2d6 w F.text 0000000 a MY_PLUGIN_a::Foo::Baz()现在,在0×8048890:file Source/Ba

如何抑制错误消息并以静默方式继续GDB脚本?

我有一个GDB脚本,它在计算调用堆栈的死区,并使用GDB 7.2盲目调用list和up: gdb -q -batch -x gdb.cmd gdb.cmd具有: list up-silently list up-silently [...] 不幸的是,如果gdb找不到源文件或它位于未使用-g编译的库中,则此操作将失败: gdb.cmd:30: Error in sourced command file: Line number 63 out of range; /home/ross/tmp

是否可以将GDB便利变量声明为数组?

我想声明一个数组便利变量,例如 set $list[10] 但是我有一个语法错误 是否可以使用方便变量创建向量 我可以使用指针,如果我能找到GDB可以使用的目标程序不会使用的绝对区域内存 哦,顺便说一句,我没有一个符号表用于我正在调试的目标程序,使用的编译器与GDB不兼容 我拥有的跨目标版本的GDB不支持python。我认为只有在底层分配内存才有可能。也就是说,尝试以下方法: set $list = (int *) malloc (10 * sizeof (int)) 更改类型以适合 另一个

Gdb 如何设置最早的断点

我试图在模块加载到gdb后立即停止。让我们假设二进制文件完全去掉了所有符号信息,因此没有主符号 理想情况下,我会在入口点上设置断点,但由于重新定位,这种想法失败了: (gdb) info target Symbols from "./application". Local exec file: `./application', file type elf64-x86-64. Entry point: 0xc154 ... (gdb) break *0xc154 Breakpoin

使用gdb和gfortran-FPE'进行调试;s

我正在调试一个更大的数值程序,这个程序是我加上去的。它是用fortran90编写的,用gfortran(适用于Mac的最新版本)编译,我正在用gdb(同样适用于Mac的最新版本)调试它 我添加的程序在某个地方有一个bug,我正在试图找到它,这很明显,因为运行该程序不会产生预期的结果。当我在gdb中运行它时,最后会得到以下输出: 注意:以下浮点异常是信令:IEEE\u无效\u标志IEEE\u除以\u零IEEE\u下溢\u标志IEEE\u非规范 [下级1(进程83843)正常退出] 我想确定这个FP

来自GDB和objdump的源交叉反汇编

在我的一次(FWIW,ARM)调试会话中,我注意到来自GDB和objdump-S的源交叉反汇编输出有一个有趣的不同:objdump似乎跳过了单个/组指令,并显示生成这些指令的源代码行(指令顺序)。另一方面,GDB反汇编似乎要跳过源代码行,并列出从该源代码行(源代码顺序)生成的所有汇编指令 对于-O0代码,两个程序的输出看起来相同。但是,对于优化的代码,GDB的反汇编更有用,因为它将所有分散的指令集中在一个地方,因此很容易看到仅由源代码行生成的内容(显然,在这种情况下,指令地址不会是连续的) 我认

Gdb 如何从abrt获取coredump`

我正在运行Fedora 23,最近才发现abrt处理崩溃应用程序中的coredumps,并将所有内容放入/var/spool/abrt/ccpp date pid中。是否有一个命令可以从abrt获取coredump,而不需要从指定的文件夹手动复制?或者我可以让abrt将coredump提供给gdb,并加载二进制文件吗 我宁愿不改变/proc/sys/kernel/core_模式 我在想以下几点: $ cc -g -o foo main.c $ ./foo segmentation fault (

Gdb 程序在调试模式下崩溃:";“无法请求”吗;?

在EclipseCDT中,我的代码不会在调试模式下运行。我得到以下信息: /build/gdb-HnfxP\uu/gdb-7.10/gdb/cp support.c:1595:demangler警告:无法demangle'\uZDVI7Vector3Dest6VectoredTvt0\uuU EcvT0\uU eersais4\uEERks1\uIs2\uEERks1\uIs3\uSais3\uEE'(demangler失败,信号11) 无法转储内核,请在下次执行GDB之前使用“ulimit-c

如何在gdb下启动程序时仅输出警告?

我有一个我正在调试的程序。当程序在gdb下启动时,会发出几个警告,但这些警告会隐藏在程序的输出下 如何确保只显示警告并保持可读取状态?如果您询问如何抑制程序的输出,那么答案是完全按照shell中的方式执行。当您键入run时,gdb实际上使用shell来启动程序,因此某些类型的重定向可以工作 在这种情况下,要抑制所有输出,可以执行以下操作: (gdb) run > /dev/null 2>&1 我在这里假设警告是您希望看到的gdb正在打印的内容。不幸的是,gdb不记得它打印了

GDB断点实现

我和aarch64上的gdb有问题。我不能描述很多关于这个平台的细节,但它不是必需的。问题是断点处理。只有断点的第一个停止运行良好,在继续断点之后,就不会再次插入断点,程序将在没有后续断点停止的情况下运行。这会导致更多错误,例如内部gdb断点无法正常工作,动态库无法正确自动加载 据我所知,gdb在感兴趣的地方插入特殊的bp指令(如x86-64上的INT3),这会在执行期间生成SIGTRAP,由gdb处理(用于bp停止、符号加载等)。当执行继续时,gdb必须再次插入该指令 我在aarch64和x8

KGDB,远程连接错误

我是KGDB的新手,我从主机连接目标时遇到问题,出现以下错误。 (gdb) target remote /dev/ttyUSB0 Remote debugging using /dev/ttyUSB0 Ignoring packet error, continuing... warning: unrecognized item "swreak" in "qSupported" response warning: unrecognized item "ReloInsn" in "qSupporte

GNAT studio 2020社区不再对GDB Windows 10作出反应

我有几个ADA项目是用GNATStudio社区版本2020开发的。在其中一些项目中,当我尝试调试时,单击调试会在初始化调试会话时导致“程序不再响应”。我运行og GNAT Studio的最新版本和Windows 10的最新更新。有一个项目GDB在几个星期后不再工作,其他项目仍然正常工作。如何解决这个问题?这有点奇怪,因为只有一些程序受影响,而另一些程序仍然正常工作 我将尝试只使用GDB调试这样一个程序,而不使用GNATStudio来检查问题是否仍然存在。 找出失败程序中是否存在任何模式也很有用,

Gdb 为什么我能';你不能直接访问内存吗?

这里的p*it和p*0x6不是一样吗???gdb'p'命令只能用于打印变量值。 如果要检查内存,请仔细查看,除非您位于实际内存映射到地址0的嵌入式目标上,it=0x6的值是假的(通常是空指针解引用的结果) gdb打印*这一事实可能意味着gdb中存在缺陷,但很难说。不幸的是,您没有说明您使用的是哪个版本的GDB和什么操作系统 (gdb) p it $2 = (item *) 0x6 (gdb) p *it $3 = {next = 0x0, prev = 0x0, h_next = 0x0, ti

基于内存地址的Gdb条件步骤?

我想知道是否有可能创建一个脚本,根据内存地址值一步一步地(在中断后)继续执行程序。 因此,如果我正在跟踪一个函数,它进入了一个高内存值,我会调用gdb脚本,直到内存值低于一个设定值——然后它会再次中断 我对gdb很陌生,还在阅读手册/教程,但我想知道我的目标是否可行:)-如果你能让我找到正确的方向,那就更好了;) 谢谢 编辑,使用伪代码更新: while (1) { cma = getMemoryAddressForCurrentInstruction(); if (cma &g

使GDB每次都打印上下文

LLDB每次打印当前行周围的上下文,如下所示: int a = 12; int b = a * 13; -> printf("%d\n", b); return 0; } 同时,GDB只打印一行当前行: -> printf("%d\n", b); 我能像LLDB一样让GDB打印上下文吗?用谷歌搜索give all-around-list命令。没有内置的方法来实现这一点 您可以使用hookpost-stop调用显式list命令,让它工作起

GDB检查数据显示格式,从一行8字节到4字节

这是mygdb的显示 (gdb) x/20bx 0xbffff2c0 0xbffff2c0: 0xd4 0xf2 0xff 0xbf 0x16 0x8f 0x04 0x08 0xbffff2c8: 0x05 0x00 0x00 0x00 0x00 0x00 0x0c 0x42 0xbffff2d0: 0x6b 0x00 0x00 0x00 是否可以将其更改为一行4个字节?使用x/20wx (g

GDB不显示代码状态

我有很多使用-ggdb3标志编译的源代码。 我已将源代码和可执行文件复制到另一台机器上。 当我在gdb中运行exe时,它在中断时不会在行号处显示语句 这就是我所看到的 Breakpoint 1, TestCode (handler=0x806e110, args=0xffffd2b0) at ../myfile.c:1080 1080 ../myfile.c: No such file or directory. (gdb) n 1083 in ../myfile.c (gd

逐步调试时如何将gdb CPU寄存器上下文从X86切换到X64-32

信息寄存器 设置体系结构i386:X64-32 As we know, during gdb debugging, command 'info reg' can be used to show register status. But in some cases, if gdb start with x86 binary, which may jumped into a memory block which contains X64-32 instructions, how can I ge

调试f77程序时GDB无法打开文件

所以我不是一个大CS的家伙,所以请容忍我,因为我试图充分解释这一点 在工作中,我使用Fortran 77编写的程序进行建模。我们的调试一直是个问题,因为一些IT约束超出了我的控制范围。当我们尝试使用GDB时,编译器将加载。运行程序时,它会通过内部逻辑检查失败。程序正在查找输入文件,但找不到,因为GDB没有加载另一个文件,该文件包含输入文件和其他相关文件可能所在的所有目录列表 有关守则: ... logical exst ... INQUIRE(FILE='KEYWORDS',EXTST=exst

gdb回溯机制

允许gdb执行backtrace 1的机制得到了很好的解释 从当前帧开始,查看返回地址 查找其代码部分包含该地址的函数 理论上,可能有成千上万的函数需要考虑。 我想知道是否有任何固有的限制阻止了gdb 通过创建一个带有返回地址->函数名的查找表是什么让您认为GDB可以直接搜索所有函数?事实并非如此。GDB将符号组织到两个不同的数据结构中,以便在地址和封装函数之间进行更有效的映射 一个很好的起点可能是这里:是什么让您认为GDB可以直接搜索所有函数?事实并非如此。GDB将符号组织到两个不同的数据

如何让gdb允许我打电话;“地板”;即使安装了调试信息文件?

作为回应,我验证了我确实有调试包,这些调试包应该提供足够的调试信息,以便从gdb命令行调用函数,例如floor,但gdb中仍有一些异常行为 我通过以下方式运行此版本的gdb: gdb --version 是: 是: 我期望gdb使用的调试包,以便通过以下方式找到floor符号: dpkg --listfiles libc6-dbg | grep libm 是: 通过以下方式编译、运行和运行gdb: #!/bin/bash exec 2>&1 set -x rm -rf "/

上一页 1 2  3   4   5   6    7   8   9  ... 下一页 最后一页 共 37 页