我最近遇到一个段错误问题,在调用 delete 方法时被命中。我已经深入检查了代码,并消除了删除空指针、多次删除或越界(分配的内存足够大,可以容纳之后写入的内容)的可能性。这个问题可以重现,每次它在同一个地方出现段错误。
我不知道可能导致此问题的原因。我想知道是否有可能从我得到的错误代码中得到一些线索,例如:- segfault at xxxxxxxxxxxxxx rip xxxxxxxxxxxxxx rsp xxxxxxxxxxxxxx error 4
我在网上搜索了很长时间,只从 stackoverflow 获得有用的以下信息:-
“错误代码只是页面错误的架构错误代码,似乎是特定于架构的。它们通常记录在内核源代码的 arch/*/mm/fault.c 中。我的 Linux/arch/i386/mm/ 副本fault.c 对 error_code 的定义如下:
bit 0 == 0 means no page found, 1 means protection fault
bit 1 == 0 means read, 1 means write
bit 2 == 0 means kernel, 1 means user-mode
"
这是我的问题:- 错误代码 4 的可能原因是什么(我的平台是 RHEL5 64 位,x86_64)?有没有办法从错误代码中判断可能的原因?
任何其他有关如何诊断此类问题的建议也值得赞赏!