2013-06-02 32 views
1

突然我的代碼開始引發異常First-chance exception at 0x7731c41f in VideoPlayer.exe: Microsoft C++ exception: GenICam::RuntimeException at memory location 0x0018f5dc..我無法找到它究竟從哪裏拋出,所以我在main函數和main之外的所有內容都發表了評論。我開始取消註釋代碼塊,而main中的代碼仍然是註釋。雖然這樣做,我注意到,有功能A,當它被評論有沒有例外,但是當它被取消註釋它會引發上面的異常。如果沒有人調用函數,爲什麼我會得到第一次機會異常?

我不明白它是如何導致懷疑,如果它沒有被調用(我在它放置斷點和代碼在主要評論)?

+0

你有沒有更改任何項目屬性? –

+0

@IAMHERE,不,我沒有。 – theateist

回答

2

您的函數將在靜態初始化過程中使用。 看看下面的例子:

#include <iostream> 
bool static_func() 
{ 
    std::cout << "Before main" << std::endl; 
    return true; 
} 
static const bool b = static_func(); 
int main() 
{ 
    std::cout << "We are main" << std::endl; 
    return 0; 
} 

既然你只能看到一次機會異常將被捕獲並處理。例如,我在抽象工廠看過這樣的結構,工廠在這裏自行配置。
你的斷點沒有命中的原因必須是別的。

+0

我檢查了'A'功能中的代碼,並且使用了第三方類型('BCamera相機;')。當'A'被註釋掉時,鏈接器將它從最終代碼中排除,當'A'被取消註釋時,鏈接器包含該類型,並且可能在某處存在一些全局/靜態對象實例化。有什麼方法可以調試這樣的事情嗎? – theateist

0

在VS中,調試菜單,異常...檢查匹配類型的throw列。然後開始調試,它會在發生拋出的地方停止。你可以看看爲什麼。

相關問題