我正在读取一些安装程序正在连续写入的日志文件。但是,在某些情况下,我会因为以下原因而随机崩溃:
Crash reason: EXCEPTION_ACCESS_VIOLATION_READ
我对此有几个问题 -
1:如果您看到以下代码,我正在尝试处理读取时发生的任何异常。那么为什么EXCEPTION_ACCESS_VIOLATION_READ没有被捕获而程序崩溃。
2:看起来它正在发生,因为安装程序在我读取文件的同时写入文件。 wxTextFile不允许我打开文件的模式。所以,如果我使用一些C函数并以READ_ONLY模式打开文件,这种崩溃是否仍然会发生?
以下是我的代码:
wxTextFile file( wxT("C:\\logfile.log") );
WriteLog(wxT("Will start monitoring log file."));
while(true)
{
if(file.Exists())
{
try
{
if(file.Open())
{
wxString str = file.GetLastLine();
WriteLog(wxT("Got::")+str);
file.Close();
}
}
catch(...)
{
WriteLog(wxT("CRASH: something went wrong::MonitorLogFile()"));
}
}
//Exit if needed
Sleep(1500);
}
答案 0 :(得分:0)
我相信14天你的问题解决了不是吗?
我有一种感觉(我对wxWidgets知之甚少)你的编译器在这里执行地址添加
WXT(" GOT ::&#34)+ STR
尝试将其更改为2个真正的字符串
是wxT()一个宏调用,解析为L"" ?如果是这样,那么你得到了你的问题,你将修改代码以使用真正的字符串对象(不是宏文本)+第二个字符串对象执行字符串连接,此时你使用+作为运算符重载而不是我怀疑的地址总和
此致