我的应用程序运行正常,直到我尝试使用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