我是學士學位,我的導師問我這個問題,你可以幫我解決這個問題。 我已經做了Google搜索,但我仍然困惑。我有一個C++代碼,在執行main()之前在啓動時崩潰,問題可能出現在哪裏?
有沒有找到崩潰原因的工具?
我真的很感激你的時間。
我是學士學位,我的導師問我這個問題,你可以幫我解決這個問題。 我已經做了Google搜索,但我仍然困惑。我有一個C++代碼,在執行main()之前在啓動時崩潰,問題可能出現在哪裏?
有沒有找到崩潰原因的工具?
我真的很感激你的時間。
在實際執行開始之前有幾件事發生。我想到的第一件事是全局變量的初始化。例如:
#include <cstdlib>
int getSomeValue(){
// some code to produce crash, e.g. as suggested by Barmar...
abort();
return 0;
}
int value = getSomeValue();
int main(){
return 0;
}
而關於如何找到這樣的錯誤的問題,答案是:使用調試器。
只是要清楚 - 這個代碼不會崩潰之前,主要 – pm100
實際上我不太確定... – user463035818
@ pm100但沒有全局變量初始化之前主要啓動? – user463035818
As @ tobi303表示全局變量在main
之前被初始化。
如果其中一個全局變量是一個對象,那麼該對象的構造函數會在main
之前運行。
如果該構造函數調用其他函數,那麼在main
之前也會調用這些函數。
class SelfCrashing
{
public:
SelfCrashing() { int x = *(int*)NULL; } // Deliberate crash
};
SelfCrashing myGlobal; // Default Constructor called
int main()
{
/* Program never got here */
}
是 - 它被稱爲調試器。你在什麼平臺上 – pm100
有些代碼請。或者,您也可以調試並自己找出它。 – Ajay
@Ajay這是一個面試問題,基本上要求一個代碼示例,可以在主啓動前崩潰 – user463035818