我是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中是否有一个位置可以检查程序发生了什么(为什么会死亡等等)....
答案 0 :(得分:1)
我解决了这个问题。这是我的一个愚蠢的错误。 尽管我使用新函数编译了库,但我没有将它添加到测试环境中。 测试环境具有较旧版本的库,没有新的函数API
但是很惊讶,fucntion电话没有让程序崩溃,或者显示出任何问题迹象