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

C++ program dies when making a library call

本文关键字:调用 程序 C++      更新时间:2023-10-16

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

(程序在不调用此函数时运行良好,我尝试过,杀死 -s SIGSEGV $pid。在此实例中,将生成核心转储。所以生成核心转储没有问题(

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

也没有 NUL指针问题,因为我在调用库函数之前正在检查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;
}

看到的最后一个日志是"我不是空"程序死了。谁能给出提示可能是什么问题。在 solaris 中是否有一个地方可以在没有管理员权限的情况下检查程序发生了什么(为什么它死了等(。

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

但很惊讶功能调用没有使程序崩溃,也没有显示出任何问题的迹象