正在gdb中转储内存-如何在运行时选择文件名

我正在运行一个对文件进行处理的程序。 我希望能够为程序提供多个文件,通过使用gdb附加到程序,我希望在代码中的某个点为每个文件获得内存转储。我希望每个文件的转储都转到与输入文件具有相同文件名的文件(可能在格式化它之后,比如添加后缀) 因此,假设我有一个名为HereIsTheFileName(char*filename)的函数和另一个名为DumpThisMemoryRegion(void*startAddr,void*endAddr)的函数,我想执行如下操作: 要获取环境变量的文件名,请执行以下操

如何使用gdb在剥离共享库的函数上设置断点?

我有一个可执行文件和剥离的lib。所以可执行文件使用的文件。 我已经反编译了lib.so文件并定义了函数fun我想设置断点及其内部地址 是否可以使用gdb在函数fun上设置断点? 如何在运行时定义fun的地址 是否可以使用gdb在函数fun上设置断点 是:GDB可以在任意地址上设置断点: (gdb) break *0x12345678 如何在运行时定义fun的地址 由于GDB默认禁用ASLR,因此fun的地址不会因运行而改变(假设您从一开始就在GDB下运行程序) 因此,您只需找到fun的地址一

gdb加载调试信息失败,调试webrtc peerconnection_客户端时出现侏儒错误

现在,我构建了google webrtc项目的peerconnection_客户端。 但是,当输入命令:gdb out/Default/peerconnection\u client时,我得到错误: 从中读取符号 /opt/dada/src/webrtc/native/src/out/Default/peerconnection_client…Dwarf 错误:具有DW_AT_GNU_dwo_名称的编译单元具有子级(偏移量 0x59d0)[在模块中 /opt/dada/src/webrtc/na

gdb问题中的C程序调试

我正在尝试在gdb上运行我的应用程序。因此,我用“g”选项编译了它。但是当我运行gdb./app时,我得到: DW_FORM_strp pointing outside of .debug_str section [in module /home/w/app] 我不能休息: (gdb) break main No symbol table is loaded. Use the "file" command. (gdb) . 很可能您已经用较新版本的GCC编译了您的程序,但是正在用旧的G

将AWK输出重定向为GDB的输入

我正在做一项调查 ps | grep process_name | awk '{if ($2 == "process_name") {print $1} }' 它显示进程名称的进程id 然后我做了一个gdb-p进程\u id。我想把这两条语句合并成一条语句。有什么建议吗 ps | grep process_name | awk '{if ($2 == "process_name") {print $1} }' 输出:进程id gdb -p process_id 不需要grep或awk或

除掉;“无论如何退出”;使用GDB提示:只需终止进程并退出即可

考虑: (gdb) q A debugging session is active. Inferior 1 [process 9018] will be killed. Quit anyway? (y or n) y 什么是.gdbinit选项使GDB总是在退出请求时终止正在运行的进程 我知道GDB可以连接到已经运行的进程,所以在退出时杀死它们是不好的。但对于一个从it开始的流程来说,第二次退出时,确认您的操作的需求开始让人烦恼 set confirm off 有关详细信

GDB问题BFD:重新打开/tmp/:没有这样的文件或目录

我在Linux进程上运行GDB,每当遇到断点时都会发现这一点 GDB问题BFD:重新打开/tmp/:没有这样的文件或目录 我看到一个bug打开了,但不确定是否有人知道这个问题的解决方案 问题在于gdb延迟加载某些节,但您已删除了共享库 一个修复方法是在gdb使用共享库时不删除它 另一个修复方法是修改gdb,使其不延迟加载部分。如果按照这种方式,延迟加载都是在dwarf2read.c中完成的

Gdb 从大型崩溃中提取stacktrace

我在以下位置安装了一个崩溃处理程序: /proc/sys/kernel/core_pattern 它通过管道将传入的coredump传输到一个文件,然后通过gdb提取stacktrace 问题是,有时这些CoreDump可能非常大(通常超过30GB)。在这些情况下,在应用程序挂起之前,用户会在coredump写入磁盘时一直等待 关于如何以非阻塞方式处理这些非常大的CoreDump,有什么建议吗?我不在乎coredump本身,stacktrace才是有价值的 我无法访问源代码,所以像这样的答案并

是否可以使用vscode连接到远程gdb目标?

我正在尝试使用visual studio代码将配置设置为连接到运行gdbserver的远程C/C++gdb目标。目前是否支持此功能?如果是这样,我如何绕过这些限制: 地址和端口选项表明C/C++不支持它们 我可以强制代码使用特殊的远程启用版本的gdb,但它试图在本地运行目标应用程序,而不是连接到目标gdbserver平台 假设我能解决#1和#2,PowerPC远程目标是否会得到支持 这有点晚了,但我现在就安排好了。 我正在调试一个在远程ARM设备上运行的linux应用程序 我安装了VS代码的扩展

Gdb Trace32命令,用于从ELF文件中读取给定地址的符号名

我使用T32加载bin文件和elf,并编写脚本从elf文件中提取Pc、Lr寄存器值。现在我有了的地址,比如说PC的地址是0xCCDDDD。现在我需要得到对应的符号。 我运行了gdb并使用了gdb info symbol0xccccdddd并获得了符号名。 但我需要知道T32本身是否有任何命令来获取符号名。或者我可以从一些命令中获取符号名称,如readelf或objdump。 提前感谢。打开窗口查看所有静态符号的命令为 sYmbol.Browse 要了解有关该窗口的更多信息,我建议检查TRACE

GDB:使用环境变量设置便利变量

我想使用bash/gdb环境中的变量,并将其设置为gdb中的方便变量 (gdb) show environment bar=1 (gdb) set $foo = (show environment bar) (gdb) show convenience foo=1 当然,我的第二个(gdb)命令返回一个错误。我看了很多,看看这样的事情是否可能。但也许我看错了方向。有人能帮忙吗?您可以使用内置Python来完成,如下所示: (gdb) py import os (gdb) py gdb.

GDB-peda-searchmem命令

我在gdb peda中找不到使用“searchmem”命令的示例,在标准gdb中,“find”命令还可用于查找感兴趣的指令,如下所示: (gdb)find /b start_address,end_address,opcode1,opcode2,..,opcodeN 例如,要搜索小工具“pop ebx;ret”,我会键入gdb: (gdb)find /b start_address,end_address,0x59,0xc3 如何使用gdb peda来执行此操作 更新: 用ropsearc

Gdb mpich2可执行文件标准输出

我需要用相同的mpirun(mpich)命令启动2个可执行文件(program1和program2),并且我正在尝试用gdb调试program1。我使用以下命令: mpirun-n1gdb程序1:-n1程序2 该命令正确地打开了gdb控制台,但是如果我在mpi_init之后的某个地方设置了一个断点,屏幕上就会充斥着program2的标准输出。有没有简单的方法将program2(仅program2)的标准输出重定向到文件 我的快速解决方案是在program2中硬编码一部分stdout,但我确信一定

Gdb 如何在局部作用域变量上设置持久和条件观察点?

如果我为当前作用域的局部变量设置了一个观察点,它将在超出作用域时自动删除。有没有办法设置一次,并在进入同一范围时保持自动激活 是否还有设置条件监视点的方法,如如果var1==0,则监视var1?就我而言,这种情况不起作用。只要var1的值发生更改,gdb就会停止,而不是直到var1==0为真。我的gdb是GNU gdb 6.8-debian 我不确定我们使用的是哪种语言,因此确切的答案会有所不同,但是您是否可以将变量更改为静态、全局或动态分配(并且在函数返回时不释放它?)。这样,它的原始地址就不

配置Qt Creator以使用GDB

我的机器中有GDB和CDB。我的Qt创建者正在使用CDB进行调试 我试图指向GDB路径,但它不起作用 如何使用GDB将Qt Creator设置为调试?确保您已将Qt Creator设置为“调试”生成配置(生成菜单->设置生成配置->调试)。这听起来可能很明显,但我不小心将我的设置为“Release”,并且花了数小时寻找gdb配置问题,当时Qt Creator忽略了我的断点,尽管我使用“Start debug”命令运行应用程序 还请注意,在这种情况下,重新配置Qt Creator进行调试构建可能不

在Eclipse CDT(Helios)中使用Cygwin gdb调试时出现的问题

我试图使用Eclipse CDT和cygwin gdb调试一个应用程序,如果我的代码调用Sleep,我将面临一个问题,看起来每当代码中遇到睡眠时,调试器似乎都会无限循环。我的意思是,它在睡眠后不会终止或碰到断点。 按pause键时,代码卡在sigint::INTERRUP上的一个线程上。 即使是我的调试器控制台窗口也会在控制台输出中抛出以下错误: [New thread 5968.0x1f98] Error: dll starting at 0x774a0000 not found. Error

如何使用寄存器和原始堆栈在没有符号的情况下分析和调试gdb核心

在客户处,第三方软件崩溃。进程和库被剥离(没有符号),调用堆栈不提供任何有用的信息。我所拥有的只是可能没有损坏的寄存器。这个第三方代码是用C编写的 现在,我已经使用gdb来调试更简单的问题。但是这个有点复杂。我认为寄存器和原始堆栈信息可以用来记录崩溃发生的位置,我需要这方面的帮助 不可能在客户站点部署非剥离二进制文件,也不可能进行内部崩溃复制。另外,我不熟悉这个第三方代码 我还需要以下方面的指针/站点/文档: 1) ELF和各种节标题。 2) 如何为库和进程创建符号文件(编译期间)。 3) 如何

如何在GDB中打印寄存器值?

如何打印%eax和%ebp的值 信息寄存器显示所有寄存器;信息寄存器eax仅显示寄存器eax。该命令可以缩写为i r如果您试图在GDB中打印特定寄存器,则必须省略%符号。比如说, info registers eip 如果可执行文件是64位的,则寄存器以r开头。以e开头是无效的 info registers rip 这些可以缩写为: i r rip 还有: info all-registers 然后你可以得到你感兴趣的寄存器名-对于查找特定于平台的寄存器非常有用,比如NEON Q。。。在

Gdb 在MAC上调试32位NACL exe?

我希望在mac平台上调试32位nacl exe。我无法调试它,因为在mac平台上我找不到32位的nacl gdb。有人成功地做到了吗?GDB for Native Client是在Pepper 23中发布的,因此首先检查您是否正在使用Pepper 23版本的NaCl SDK或更新版本。(要下载SDK的任何新版本,请从nacl_SDK目录下发布/naclsdk update。下载完成后,您应该看到pepper_23目录(或更新的目录)。使用该目录中的工具。) 在SDK中,GDB二进制文件位于以下位

在使用-g构建的共享库中的函数中使用gdb确定局部变量的值(gdb表示没有行号信息)

清单项目1-4是我做的步骤。 列表项5描述了该问题 清单项目6提供了补充资料 我已经编译了一个C源代码,比如c1.C和-g标志 我还有一个 动态共享库,比如liba1.so,为所有源代码使用-g构建 它拥有的文件 我通过将c1.o(c1.c对象代码)与liba1.so链接,构建了可执行文件exe1 我做gdb exe1。我能一步一步地通过c1.c的来源。当c1调用共享库时,我还能够在共享库中的函数上设置断点 但是,当我尝试单步执行函数时,它会说“单步执行直到退出函数foo1,它没有行号信息”,它

在gdb中加载本地共享库

我本以为这个问题已经问过了,但我找不到。如果是的话,请容忍我 我正在debian安装中尝试对现有程序进行修改 这个名为foo的程序在编译时会创建一些自己的共享库。我想调试这个程序并进入一个本地共享库,称之为libbar.so 但是,由于这是一个现有的程序,所以已经有一个/usr/lib/libbar.so,我不想覆盖它 那么如何让gdb使用本地libbar.So呢 这个名为foo的程序在编译时会创建一些自己的共享库 您的意思是程序在运行时将自己的libbar.so的副本写入磁盘吗 这是非常不寻常

如何修复GDB ;途易规模问题?

当打开和关闭TUI模式(使用Ctrl+x,a)时,gdb通常仅使用一半屏幕(因此cmd和src窗口各只占用屏幕的1/4),并且winheight cmd+5无法工作 如何防止或修复此问题?这显然是与readline相关的问题 显然有人已经研究过了:所以希望它能在更新版本的gdb中得到修复 同时,当问题发生时,可以使用以下乱码来解决问题: 切换TUI模式,直到出现问题 在运行gdb的计算机上打开另一个终端,并使用类似于pkill-SIGWINCH-gdb的命令将SIGWINCH发送到gdb进程 切

lldb与gdb的等价物是什么;s--args?

我习惯于这样运行gdb: $ gdb --args exe --lots --of --flags -a -b -c d e ... (gdb) r lldb有等价物吗?是的,它只是--而不是--args。从帮助中: lldb -v [[--] <PROGRAM-ARG-1> [<PROGRAM_ARG-2> ...]] 您也可以先启动lldb并使用: (lldb) settings set target.run-args 1 2 3 (lldb) run 或: (

为什么GDB不打印阵列?

当运行我的一些二进制文件时,我发现GDB没有转储数组很奇怪,我不知道为什么这只发生在一些可执行文件中 宣言非常简单: tbl_account_t accounts[MAX_ACCOUNTS]; 当我打印数组(只是任何数组)时,我得到以下结果: (gdb) print accounts $16 = 0x618d20 <accounts> 我确实有数据在里面: (gdb) print accounts[1] $18 = {email_len = 16, passwor

对gdb中观察点的新旧值的编程访问

我真正做的是在设置或清除单个位时设置一个观察点。我通过在包含位的字上设置一个观察点,然后使其以*word&mask为条件(用于设置,或(~*word)和mask用于清除) 问题是同一单词中的其他一些位可能会被修改,而条件可能恰好已经匹配。如果我有新旧值,我可以设置一个条件($old^$new)&mask) 我查看了pythongdb.Breakpoint类,但它似乎也没有收到此信息 我想我可能会发疯,设置一个命令列表,每当*word的值发生变化时记录当前值,并将其用作$old。但是有一半的时间我

如何在GDB中将repeat count传递给x命令

x命令可以检查GDB中的内存。像 x/4xg 0x60400 现在我将定义我自己的x comand,它使用指定的重复计数检查内存,如: define myXCommand set var &repeatCount=$arg0 x/(???)xg 0x60400 end 我已经尝试了很多方法将variant repeatCount传递给x命令,但最终失败了。我的问题是如何将repeat count传递给x命令?如果有人能提供帮助,我将不胜感激。大多数表达式中都可以使用方

我可以强制gdb使用硬件断点执行步骤吗?

我正在调试一个远程目标,似乎软件断点不起作用,但硬件断点确实起作用 我希望能够使用stepi命令,但gdb似乎坚持使用软件断点 有没有办法强制gdb为stepi使用硬件断点 目标是通过blackmagic探针调试的ARM STM32芯片。一种解决方案是将内存区域标记为只读,从而强制gdb使用hw断点 即,如果我的代码在我运行的地址0x8000000-0x801000上运行 mem 0x8000000 0x8010000 ro

Gdb 如何对程序进行双向或反向调试?

有人实际使用过可逆调试器吗?谷歌发现的唯一产品是。它显然只适用于Linux 你要找的词可能是“全知调试” 这里有一个: UNDODB页面有一些链接到(昂贵的)商业调试器。 VS 2010应该有这样的东西,我想。 < P>可以考虑使用VMware的重播调试,在VMware工作站的最新版本中可用,如参见。您可以在下载试用版,该试用版可与Visual Studio一起使用 (免责声明:我为VMware工作,但不在本产品上。)最新的gdb 7.0版(本周发布)支持在许多平台上进行反向调试(例如,Vi

为什么我的gdb调试器设置了2个断点?

这正常吗?我发誓直到最近它只设定了1个断点。如何使其仅在运行文件中设置断点,而不在源文件中设置断点 (gdb) break main Breakpoint 1 at 0x1dbf Breakpoint 2 at 0x1ed8: file arrays.c, line 17. warning: Multiple breakpoints were set. Use the "delete" command to delete unwanted breakpoints. (gdb) 有多个主符号:

Gdb 加载调试符号时,如何在windbg中列出函数源?

我来自gdb,在那里我可以通过l func符号列出源代码,然后按enter键查看更多定义 如何在windbg中执行此操作?只需转到文件->开源文件 如果要反汇编func类型u func如果要打开源类型。打开-a func 如果要在命令窗口或cdb中列出源代码,请使用lsa func 您可以用地址替换func。如果只有.pdb,没有源文件怎么办?可能有重复的

在gdb中打印某些变量会导致继续执行

我已经使用gdb十年了,从来没有见过这个问题。我升级到GDB7.4,问题依然存在 我在RHEL5上调试了一个CiLK多线程C++应用程序。seg故障时停止执行。当我要求gdb打印某些变量的值(它们是boost::intrusive_ptr对模板化对象实例的引用)时,gdb将打印正确的值,但也将在很短的时间内在所有线程上恢复执行。我怀疑它会继续执行,因为我的更多调试打印语句会滚动到终端(这不仅仅是清除缓冲区——我可以继续打印它,它也会继续执行)。这种持续执行的短暂爆发导致我正在跟踪的变量的值发生变

与GDB、JTAG和CPU32的问题

我正在使用GDB和JTAG设备Abatron BDI2000调试运行在摩托罗拉M68332上的程序 68332没有任何硬件断点寄存器。它具有非常原始的调试特性。 构建工具不生成“elf”文件,因此没有用于GDB的符号。 我正在调试的程序也在Flash中运行 事实上,68332只有一条调试指令ti。ti自行执行下一个装配说明的步骤。ti xxx将逐步执行,直到到达地址xxx为止。[是的,这是穴居人时代,冷锤和凿子:] 我能够使用GDB和target remote连接到BDI2000并发出GDB命令

为什么gdb在调试MPI程序时来回移动?

有没有人经历过以下情况 出于调试的目的,我只使用了一个mpi进程,通过“mpi run-NP1”启动了基于mpi的程序。然而,当我调试程序时,重复的介入和越级经常发生 比如说,我一行一行地跟踪源代码,直到我达到了一个兴趣点。然后我试着插手,输入“n”,希望继续一行。但是,调试器返回函数的第一行。只有在我经历了两三次之后,我才能继续 给人的印象是调试器并没有做错什么,因为结果被认为是正确的。我真的很好奇为什么会这样 提前谢谢 观察到的行为通常是编译器优化活动的结果。优化可能会导致二进制代码不完全遵

GDB从地址返回跟踪

我遇到了一个GDB bt的问题。我在调试期间处于中断上下文中,因此我只能看到当前堆栈,所以回溯跟踪将只显示少数我不感兴趣的调用。然而,在我们编写的嵌入式软件中,每当恐慌发生时,我们都会保留信息的全局结构。它指向崩溃前的堆栈 我的问题是,我可以让GDB从我已知的地址做回溯跟踪,假设硬件中没有发生重新映射 我正在使用GDB7.0和olimex,我正在调试定制的基于ARM的芯片 向您致意您使用的是哪种gdb版本?它应该能够打印中断处理程序上方的整个堆栈跟踪。不管怎样,您是否尝试过直接覆盖堆栈和指令指针

Gdb 带断点的输出线程id;“命令”;

我知道如何使用info threads查看线程信息,但现在我想在断点命令中打印它们 可能吗 e、 g 在手册中搜索“$\u thread”便利变量。它保存当前的线程编号 break XX commands printf "tid=%d, item1=%s, item2=%d ...\n", some_command, a, b end

GDB-无法获取命令历史记录

我是GDB新手,无法让命令历史自动完成/向上箭头指向旧命令 在我的根目录中有一个.gbd_init文件,我的工作目录中也有一个相同的文件: set history save set history filename ~/.gbd_history set history on set history expansion on 我的根目录中还有一个空的.gbd_历史文件 GBD中的“显示历史记录”给出: (gdb) show history expansion: History expa

使用串行连接(而非TCP)与gdbserver进行调试不会';行不通

我正在试着在我的主板上调试一个运行嵌入式linux的程序,我的主机系统是Ubuntu。我对gdbserver有一个大问题。你看,我的电路板没有以太网接口,而是一个串行设备,我用它作为控制台,我注意到你可以用一个串行设备在gdbserver中进行调试,尽管考虑到在视频或书籍中使用gdbserver的人都在TCP模式下使用它,我找不到这样的例子,但我不能这样做。 因此,我所做的只是以这种方式在板上运行gdbserver: root@DM368# gdbserver /dev/ttyS0 hello

希望一致地观察并偶尔检查gdb中当前帧之外的变量

假设我在主函数中定义了一个名为var的变量。我给它设置了一个观察点。然后输入另一个名为func()的函数。此时,监视点可能会被删除,因此我无法访问该变量。有什么方法可以让你随时保持观察点 另外,我知道我可以使用printmain::var这样的语法来打印变量的值。但这还不够。有什么好主意吗?gdb的一个奇怪之处是,watch试图尊重表达式所有组成部分的范围。因此,如果您watch var,并且var超出范围,则监视点将被删除。这也适用于更复杂表达式的元素,如watcha+b 当然,这是有道理的,

无法获取GDB';用于Cortex-M3(ARM)工作的s模拟器

我需要使用模拟器,首先,我想做一些非常简单的事情:逐步完成启动代码的前几条指令。在这里: 重置\u处理程序: movs r1,#0 b LoopCopyDataInit CopyDataInit: ldr r3,=\u sidata ldr r3,[r3,r1] str r3,[r0,r1] 加上r1,r1,#4 LoopCopyDataInit: GDB就是这样的: e:\devtools\Olimex\examples\STM32-P103\u UART1>e:/devtools/Olime

使用Gdb Python API创建新参数

我不知道如何在Gdb中使用Python API完全定义新参数。源代码中包含的脚本包含以下内容: python param = gdb.Parameter("test", gdb.COMMAND_NONE, gdb.PARAM_OPTIONAL_FILENAME) param.set_doc = "This is the documentation" --> throws exception end 我使用以下命令更改并在Gdb中显示其值: (gdb) set test "hello wo

Gdb 如何从给定偏移量的ELF文件中提取符号名

我有一个十六进制偏移量,比如0xcccddd。使用gdb info symbol 0xcccddd我可以在节_name中获得符号名,例如fn()。 如何使用readelf或objdump命令执行此操作。 或者不运行gdb的任何其他命令 编辑: 在使用下面的命令之后 objdump -d --start-address 0xcccddd --stop-address 0xcccdde filename.axf 我越来越 filename.axf: file format elf32-li

需要使用gdb和半托管在Cortex-M4上实现芯片测试自动化的想法吗

我正在开发需要大量测试的安全关键软件。目标处理器Cortex-M4拥有丰富的应用资源,但单元测试和集成测试如果合并,将比板载闪存/RAM大得多。它们被设计为从gdb运行,同时使用半宿主来卸载测试结果。我们需要的是一种自动化测试的方法,这样它就可以在不需要每次测试人工干预的情况下运行 测试程序在Eclipse中使用OpenOCD和Segger调试器前端运行良好。这些要求每次测试配置,然后手动启动测试。将有30-50个测试程序,因此对于连续集成或简单的批处理运行来说,这是不可行的。 我一直在寻找可能

GDB/MI的'info proc mappings'等价物

我知道-file list exec部分,但它似乎没有在GDB 10.2中实现(目前的版本)。我想要一个GDB/MI命令,而不是info-proc-mappings,因为我想要一种更简单的方法来解析结果,而且我想知道是否有其他方法可以替代-file-list-exec-sections命令,因为它似乎消失了。在GDB/MI中info-proc-mappings似乎工作得很好。您要求的是等效但不同的命令吗?info proc mappings在流记录中给出其输出(~“0x40000 0x50000

GDB日志文件位置

嗨,我是GDB的新手。我使用了“设置登录”命令。它创建一个默认文件“gdb.txt”来存储输出。但是,我无法找到该文件并查看数据。你能告诉我文件在哪里吗?在当前工作目录中。在(gdb)提示符下尝试pwd命令。并不总是在pwd中创建gdb.txt文件。 它必须通过在gdb终端中执行命令“set logging on”来明确指定。对于我来说,pwd给出了我希望“gdb.txt”文件所在的文件夹,但没有文件显示日志记录说明应将其写入所述文件。

Gdb 校验和函数的逆向工程

我想创建一个函数来计算一个数据块的校验和,就像它用于商业程序一样。 我尝试过使用gdb或REC反编译器,但似乎我没有足够的技能来做这件事。我可以使用什么工具来反编译此函数? 有没有其他方法可以采用,比如尝试使用标准校验和函数来查看使用的是哪一种 我没有技能 逆向工程需要基本的汇编知识(除非你是逆向工程Java、C#或其他基于VM的语言)和一般编程知识。考虑到这一点,您可以使用: 用于Ida的Hex-Rays反编译器,但价格昂贵 没有反编译器的普通Ida,它是免费的,但缺乏功能 普通奥利德 对于所

如何有条件地忽略GDB中的SIGTRAP?

我正在调试一个程序,它会在特定的例程中触发一个不需要的信号陷阱。此信号在库中触发,但回溯中始终显示相同的调用方。如果调用方是[某个函数],我如何告诉GDB忽略这个信号,而不是打断它 我曾尝试使用跳过函数[某些函数]甚至跳过文件[触发SIGTRAP的文件](from),但GDB仍然在这一行中断。而且continue似乎也不支持条件句。我会选择任何不需要修改调试程序的解决方案,包括用于GDB的Python脚本。如果相关,您还可以假设在触发SIGTRAP之前,将错误写入stderr 两年前,有人问。这

Gdb 为什么设置断点并运行它失败(第2章shellcoder&x27;手册)

我正在阅读《炮弹编码员手册》,试图解决书中提出的问题。然而,鉴于这本书是十多年前写的,很难理解。我遇到的一个问题是,在我分解使用它的函数后,在调用get和printf时设置断点。每当我设置断点并运行它时,我的程序就会停止。我很想知道为什么。这是第2章分配,处理堆栈上溢出缓冲区的特定部分。我正在64位Kali Lix vim上运行我的代码。这是源代码 #include <stdio.h> void return_input (void){ char array[30];

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