【问题标题】:Is it possible to cause segmentfault even when the accessed address is accessable?即使访问的地址可访问,是否也可能导致段错误?
【发布时间】:2020-04-08 02:28:24
【问题描述】:

我在调试崩溃时遇到了惊人的分段错误。 它在取消引用 char* 指针的行中显示分段错误。但是当我使用gdb取消引用指针时,gdb没有报错。

我的平台是 linux。有什么想法吗?

【问题讨论】:

标签: segmentation-fault


【解决方案1】:

但是当我使用gdb取消引用指针时,gdb没有报错。

This answer 解释了为什么会发生这种情况。它没有什么“令人惊奇”的地方。

【讨论】:

  • 我终于找到了根本原因。但这与您的答案无关。我的问题是我启用了addresssaintizer并以一种特殊的方式访问释放的内存,这种方式只是在没有有用日志的情况下崩溃。
  • @MrPang 你的评论对我来说毫无意义。请写一个详细的答案(对您自己的问题),以便我们大家学习。
【解决方案2】:

答案是否定的,这是不可能的。

但要找出原因,请安装 valgrind,然后运行

valgrind ./yourexe

通常它会告诉您您忽略的大部分错误。记得使用不带 -O ​​选项的 gcc -g 编译你的二进制文件,这样你就可以看到源代码的行号。

【讨论】:

  • "不可能" -- 很有可能,而且经常发生。
猜你喜欢
  • 2014-05-17
  • 2014-12-31
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多