我的應用程序運行正常,直到我嘗試使用Application Verifier進行調試。從那以後,我開始變得「第一次機會異常...:無效的句柄指定」等問題似乎在Pantheios的「bailout.c」文件:Pantheios的第一次機會例外
hFile = CreateFileA("logging-bailout.txt"
, GENERIC_WRITE
, 0
, NULL
, OPEN_ALWAYS
, 0
, NULL); <--- this is where it crashes, line 442
和消息:
First-chance exception at 0x7769f8cd in myapp.exe: 0xC0000008: An invalid handle was specified.
=======================================
VERIFIER STOP 0000000000000300: pid 0x3814: Invalid handle exception for current stack trace.
00000000C0000008 : Exception code.
00000000111DE950 : Exception record. Use .exr to display it.
00000000111DE460 : Context record. Use .cxr to display it.
0000000000000000 : Not used.
=======================================
This verifier stop is continuable.
After debugging it use `go' to continue.
=======================================
在控制檯剛記錄下我用Pantheios得到的異常之前,我並沒有太在意太多。然而,現在,當應用程序崩潰的第一次登錄使用Pantheios現在是我的時間來處理這個問題,但我不太確定如何。
設置時,我的Pantheios我按照本指南:http://www.codeproject.com/Articles/27119/Using-Callback-Back-ends-with-the-Pantheios-Loggin
在每一個文件我有記錄我在源文件中的以下行:
#include <pantheios/pantheios.hpp>
#include <pantheios/inserters/boolean.hpp>
#include <pantheios/inserters/integer.hpp>
#include <Shared/logs.h>
logs.h包含:
#include <pantheios/implicit_link/core.h>
#include <pantheios/implicit_link/fe.simple.h>
#include <pantheios/implicit_link/be.WindowsConsole.h>
在做任何記錄之前,我也會打電話給pantheios::init();
。
我使用Visual Studio 2010和被包括在 「附加依賴」 下面的LIB-文件:
$(PANTHEIOS_ROOT)\lib\pantheios.1.core.vc10.mt.debug.lib
$(PANTHEIOS_ROOT)\lib\pantheios.1.be.WindowsConsole.vc10.mt.debug.lib
$(PANTHEIOS_ROOT)\lib\pantheios.1.fe.simple.vc10.mt.debug.lib
$(PANTHEIOS_ROOT)\lib\pantheios.1.util.vc10.mt.debug.lib
然而,我所有的日誌是這樣的:
第一次機會myapp.exe中的0x750bb9bc處出現異常:Microsoft C++異常:stlsoft :: winstl_project :: windows_exception在內存位置0x1822bda0 ..
20120423-104817.497:未能將消息寫入日誌文件;給出的信息如下:[myapp.Qt.Framework.13424,2012年4月23日10:48:17.496 a.m .;調試]:致電
pantheios::log(pantheios::debug, "some logging");
時,那麼,「一些日誌」
,我的所有日志記錄被寫入了「救市」的文件在同一文件夾中的項目。這工作之前,但它是我的「待辦事項列表」上的一個重大的子彈(但比其他事情更深入一點)。
所以現在我的問題是,我該如何解決這個問題?跟着我找到的每一個教程,但沒有成功。爲什麼我的應用程序在運行Ms應用程序驗證程序後決定不再接受此操作?沒有意義。
是的,我轉過身,所以現在它不再崩潰了。然而,我不能在我的日誌記錄中顯示這條消息,因爲這使得它很難閱讀。我仍然無法弄清楚如何讓它消失。 – chikuba 2012-04-29 22:23:16
第一次機會的異常消息如何寫入您的自定義日誌中?如果您捕獲所有異常並記錄它們,則可以明確指出哪些異常會被拋出並忽略它。理想的解決方案仍然是修復導致異常的條件,當首先調用'CreateFileA' – Attila 2012-04-30 00:03:44
不記錄異常,但是「20120327-112911.994:未能將消息寫入日誌文件;給出的消息如下:」in消息的開始。 – chikuba 2012-04-30 00:56:32