C ++程序在进行库调用时会死掉

时间:2014-12-11 08:37:21

标签: c++ unix solaris coredump

我是C ++的新手。我在库中添加了一个新方法(它是一个打印日志并返回的简单方法),并成功编译它。 然后我尝试从我的程序中调用该方法。尝试调用该函数时,程序在没有任何警告的情况下死亡。没有核心转储要调试。

(程序在没有调用此函数时运行正常,我试过,杀死-s SIGSEGV $ pid。在这个实例中生成核心转储。所以生成核心转储没有问题)

由于程序死了我也不能使用pstack。我的调试日志表明对库的调用永远不会返回。我在库中的调试日志也没有打印出来。

也没有NULl指针问题,因为我在调用库函数之前检查NULL指针

/* My Library function */

void EasyTaskScheduler::test1() {

 tauloginfo << "inside test1" << endlog;

 }


/* library call */

 if (mapper == NULL) {

  loggeneric << __FILE__ << "," << __LINE__ << "Is null:" << endlog;
  return -1;

}

 else {


  loggeneric << __FILE__ << "," << __LINE__ << "Im not NULL" << endlog;

  easyTaskScheduler->test1();

  loggeneric << __FILE__ << "," << __LINE__ << "Test function returns: " << endlog;

    return 0;

}

我看到的最后一个日志是&#34;我不是NULL&#34; 程序死了。 任何人都可以提示可能是什么问题。 在没有管理员权限的情况下,solaris中是否有一个位置可以检查程序发生了什么(为什么会死亡等等)....

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。这是我的一个愚蠢的错误。 尽管我使用新函数编译了库,但我没有将它添加到测试环境中。 测试环境具有较旧版本的库,没有新的函数API

但是很惊讶,fucntion电话没有让程序崩溃,或者显示出任何问题迹象