一切都可以正常编译,但是在运行时,它崩溃了,没有任何核心转储,异常或有关正在发生的事情的任何日志线索。插入调试行后,我发现它位于这段代码中

       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 btw。

最佳答案

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

10-04 18:34