gpt4 book ai didi

c++ - 程序接收信号 SIGILL,非法指令

转载 作者:IT老高 更新时间:2023-10-28 23:17:59 26 4
gpt4 key购买 nike

我正在使用 Linux x86_64 机器来构建我的程序。我已将共享库链接到可执行文件。在我的项目中,我正在调用一个声明 vector<string> 的函数函数内部。当该函数被调用时,我的程序被杀死。下面是通过GDB调试时得到的输出。

Program received signal SIGILL, Illegal instruction.
0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87
87 : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
(gdb) bt
0 0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87

这是我的共享库编译的问题吗?把我的头撞得够呛。请帮忙。

-查克斯

为您的查询添加更多信息:是的,我调用 File_ToText 的函数是 OC_Catalog_c 类中的虚函数。其他类的成员变量具有类 OC_Catalog_c 的对象,该对象也具有虚函数 File_ToText。使用该对象,我正在从虚函数 File_ToText 调用 OC_Catlog_c 的 File_ToText 函数。我将显示一个代码片段:

class Oc_Catalog_c  
{
virtual vector<string> File_ToText (void) const;
}

class B
{
const OC_Catalog_c* m_pCatalog;
virtual vector<string> File_ToText (void) const;
}

vector<string> B::File_ToText( void ) const
{
vector<string> a_SubData;
a_SubData = m_pCatalog->File_ToText();
}

最佳答案

感谢大家的帮助。我终于找出了导致此错误的问题。
调试更多并跟踪指令我发现程序在 ud2a 指令处失败。
我忽略了一个警告“警告:不能通过'...'传递非POD类型'struct sqlrw_request_cb'的对象;调用将在运行时中止”。
解决这些警告解决了我与 SIGILL 相关的问题。
此链接的更多说明: ud2a instruction causing SIGILL

关于c++ - 程序接收信号 SIGILL,非法指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18410344/

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