gpt4 book ai didi

debugging - 什么是段错误 rip/r​​sp 编号以及如何使用它们

转载 作者:行者123 更新时间:2023-12-04 02:11:11 25 4
gpt4 key购买 nike

当我的 linux 应用程序崩溃时,它会在日志中生成如下一行:

段错误在 0000000 rip 00003f32a823 rsp 000123ade323 错误 4

那些 rip 和 rsp 地址是什么?我如何使用它们来查明问题?它们是否对应于“objdump”或“readelf”输出中的某些内容?如果我的程序将其符号删除(到一个单独的文件,可以使用 gdb 使用),它们是否有用

最佳答案

那么 rip 指针会告诉您导致崩溃的指令。您需要在 map 文件中查找它。

在映射文件中,您将拥有一个函数列表及其起始地址。当您加载应用程序时,它被加载到一个基地址。 rip 指针 - 基地址为您提供映射文件地址。如果您随后在映射文件中搜索以略低于 rip 指针的地址开始的函数,然后在列表中查找具有更高地址的函数,则您已找到崩溃的函数。

从那里您需要尝试确定代码中出了什么问题。它不是很有趣,但它至少为您提供了一个起点。

编辑:“segfault at”位告诉你,我敢打赌,你已经取消了一个空指针的引用。 rsp 是当前堆栈指针。唉,它可能不是那么有用。通过内存转储,您“可能”能够更准确地找出您在函数中的位置,但是很难准确地计算出您在优化构建中的位置

关于debugging - 什么是段错误 rip/r​​sp 编号以及如何使用它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1456899/

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