当前位置: 首页 > 面试题库 >

解释段错误消息

公英哲
2023-03-14
问题内容

以下段错误消息的正确解释是什么?

segfault at 10 ip 00007f9bebcca90d sp 00007fffb62705f0 error 4 in libQtWebKit.so.4.5.2[7f9beb83a000+f6f000]
segfault at 10 ip 00007fa44d78890d sp 00007fff43f6b720 error 4 in libQtWebKit.so.4.5.2[7fa44d2f8000+f6f000]
segfault at 11 ip 00007f2b0022acee sp 00007fff368ea610 error 4 in libQtWebKit.so.4.5.2[7f2aff9f7000+f6f000]
segfault at 11 ip 00007f24b21adcee sp 00007fff7379ded0 error 4 in libQtWebKit.so.4.5.2[7f24b197a000+f6f000]

问题答案:

这是一个段错误,原因是跟随空指针试图查找要运行的代码(即在指令提取期间)。

如果这是一个程序,而不是共享库

运行addr2line -e yourSegfaultingProgram 00007f9bebcca90d(并重复给定的其他指令指针值)以查看错误发生的位置。更好的方法是,获得一个带有调试工具的内部版本,并在诸如gdb之类的调试器下重现该问题。

由于是共享库

不幸的是,您被水淹了。事后无法知道动态链接程序将库放置在内存中的位置。重现该问题gdb

错误是什么意思

以下是字段的细分:

  • address(在之后at)-代码尝试访问的内存位置(很可能1011我们希望将其设置为有效值但指向的指针的偏移量0
  • ip-指令指针,即 试图这样做的代码在哪里
  • sp -堆栈指针
  • error-页面错误的错误代码;有关在x86上的含义,请参见下文。
/*
* Page fault error code bits:
*
*   bit 0 ==    0: no page found       1: protection fault
*   bit 1 ==    0: read access         1: write access
*   bit 2 ==    0: kernel-mode access  1: user-mode access
*   bit 3 ==                           1: use of reserved bit detected
*   bit 4 ==                           1: fault was an instruction fetch
*/



 类似资料:
  • 我在eclipse C上遇到了问题。我的项目编译并运行,但eclipse(juno)一直说有数千个错误。例如,我的代码中有一个函数SetRun,eclipse提到了这个错误:“被调用的无效参数”候选者是:void SetRun(?),而SetRun是静态无效SetRun(uint32_t run)类型; 我有很多类似的错误,其中eclipse似乎不理解函数的类型,而是放了一个'?'。 我也有很多这

  • 在ActiveMQ Artemis 2.15.0版本中,我们自动创建队列。默认情况下,自动删除设置为true(未更改)。我们不时地看到以下日志。从日志消息来看,服务器似乎试图删除自动创建的队列,但失败了,因为它有1条消息。我的问题是,当队列中有消息时,broker为什么试图删除队列?

  • 我得到以下运行时错误消息(以及堆栈跟踪的第一行,它指向第94行)。我试图弄明白为什么它说不存在这样的方法。 第94行如下所示。 为什么括号里有四种类型(ILcom/sun/javadoc/ClassDoc; Lcom/sun/javadoc/MemberDoc; Ljava/lang/String; Z),括号后面有一种类型Ljava/lang/String;当方法printDocLinkForM

  • 对于大多数系统错误,除内部文本信息之外,MySQL还按下面的风格显示的系统错误代码: message ... (errno: #) message ... (Errcode: #) 通过检查系统文档或使用perror工具,可以检查错误代码的意义。 perror为系统错误代码或存储引擎(表处理)错误代码打印其描述信息。 象这样调用perror: shell> perror [options] err

  • 我正在使用注释在SpringMVC中进行验证。。。 我对一个字段使用了两个注释进行验证 @NotEmpty(message=“required”) @大小(最小值为3,最大值为8,消息为超出范围) 私有字符串密码; 我面临的问题是,当字段留空时,它会显示两条错误消息(*必需,并且超出范围)。但我想显示其中一条错误消息,而不是两条。。。 可以用一条消息进行限制吗?如果是,这种情况的可能性是什么? 任

  • 我在AngularJs中添加了ng repeat部分。我添加了一个必需的字段验证器。但是,当所有字段都清空时,页面高度会增加,因为会显示span标记数据。。是否可以在描述错误的ng repeat部分之后仅显示一条错误消息。当前UI代码如下: 如何在ng repeat部分之后只添加一条错误消息,以在AngularJs中描述所需的数据?谢谢