0

我正在阅读某个安装程序进程不断写入的日志文件。但是,在某些情况下,我会随机崩溃,原因如下:

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);
}
4

1 回答 1

0

我相信14天你的问题就解决了,不是吗?

我有一种感觉(我对 wxWidgets 知之甚少)你的编译器在这里执行地址添加

wxT("得到::")+str

尝试将其更改为 2 个真实字符串

wxT() 是解析为 L"" 的宏调用吗?如果是这样,那么您遇到了问题,您应该修改代码以使用真正的字符串对象(不是宏文本)+第二个字符串对象来执行字符串连接,此时您使用 + 作为运算符重载而不是我怀疑的地址总和

问候

于 2014-05-15T04:59:34.297 回答