gpt4 book ai didi

c++ - 信号 11 可以在从一个寄存器到另一个寄存器的 mov 指令中产生吗?

转载 作者:行者123 更新时间:2023-11-30 01:23:15 26 4
gpt4 key购买 nike

我从使用 gdb 分析的核心转储中获得了以下反汇编代码。

   0x083dc366 <+194>:   call   0x83db38e <Buf::push_data(UBYTE const*, UWORD)>  
=> 0x083dc36b <+199>: mov eax,esi
0x083dc36d <+201>: mov edx,DWORD PTR [ebp-0x1c]

是否有可能在第一个 mov 指令处崩溃或 gdb 的小箭头不可信?

最佳答案

唯一可能在特定指令上崩溃的方式是内存不可执行(例如,跳转到碰巧解码为 mov 的数据字节)。由于它似乎来自正确的代码部分,因此在这种情况下不太可能。

我怀疑 GDB 只是向您展示了函数调用返回的位置,而实际崩溃发生在被调用函数内部。也许它无权访问函数的代码或出于其他原因决定切换堆栈帧。使用 bt 检查完整的堆栈跟踪,并在必要时使用 frame #n 切换框架。

在极端情况下,转储本身可能已损坏并包含错误信息。如果您可以可靠地重现崩溃,最好从一开始就在 GDB 下运行程序,并在崩溃发生时立即捕获它,以免它有机会破坏任何东西。

关于c++ - 信号 11 可以在从一个寄存器到另一个寄存器的 mov 指令中产生吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com