1

一切都编译得很好,但在运行时,它崩溃了,没有任何核心转储、异常或没有关于正在发生的事情的日志线索。插入调试行后发现就在这一段代码周围

       if( MISC_TABLE_ID != tableID )
       {
            OrbSchemaStructure orbSchemaStruct;
            orbSchemaStruct.tableName = tableView;
            orbSchemaStruct.columnName = colName;
            orbSchemaStruct.dataType   = tsFact->convertDBDataTypeToEVDataType( toString( col.type() ) );
            orbSchemaStruct.primaryKeyComponent = pkComponent;
            schemaStructureDeque.push_back( orbSchemaStruct );  //crashes after this line
        }

它发生在该块的最后一行,即 push_back 发生的地方。

并且schemaStructureDeque恰好是一个类型的对象,DEQUE< OrbSchemaStructure >& schemaStructureDeque其中 DEQUE 是 std::deque 的定义。

OrbSchemaStructure 是在 idl 中定义的结构,如下所示:

 struct OrbSchemaStructure
{
   string        tableName;
   string        columnName;
   unsigned long dataType;
   boolean       primaryKeyComponent;
};

处理双端队列的方式有什么变化吗?我错过了什么吗?

在将这个问题写成过于本地化之前,请让我知道我是否缺少任何信息,或者我没有找对地方。

我正在使用omniORB 4.0.4 顺便说一句。

4

1 回答 1

0

在使用新的 AIX 11.1 C++ 编译器在 AIX 上编译 omniORB 并将其与二进制文件链接时,它已停止崩溃。

于 2012-10-23T20:57:50.807 回答