11 debugging segmentation-fault
当我的linux应用程序崩溃时,它会在日志中生成一行代码:
segfault at 0000000 rip 00003f32a823 rsp 000123ade323错误4
什么是rip和rsp地址?我如何使用它们来查明问题?它们对应于"objdump"或"readelf"输出中的某些内容吗?如果我的程序将其符号剥离出来(对于可以使用gdb使用的单独文件)它们是否有用
那么rip指针会告诉你导致崩溃的指令.您需要在地图文件中查找它.
在地图文件中,您将获得一系列功能及其起始地址.加载应用程序时,它将加载到基址.rip指针 - 基地址为您提供地图文件地址.然后,如果您在地图文件中搜索一个从略低于您的rip指针的地址开始的函数,并且在列表中,通过具有更高地址的函数,您可以找到崩溃的函数.
从那里你需要尝试识别你的代码中出了什么问题.它没有多大乐趣,但它至少可以为您提供一个起点.
编辑:"segfault at"位告诉你,我打赌,你已经取消引用了一个NULL指针.rsp是当前的堆栈指针.可能不是那么有用.通过内存转储,您"可能"能够更准确地找出您在函数中所处的位置,但实际上很难确定您在优化构建中的位置
| 归档时间: |
|
| 查看次数: |
32356 次 |
| 最近记录: |