c++ - 监视日志文件时崩溃 (C++)

标签 c++ file crash wxwidgets file-monitoring

我正在读取一个由某些安装程序进程连续写入的日志文件。但是,在某些情况下,我会因以下原因而随机崩溃:

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

最佳答案

我相信 14 天后您的问题就会得到解决,不是吗?

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

wxT("得到::")+str

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

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

问候

关于c++ - 监视日志文件时崩溃 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383291/

相关文章:

c++ - C++ 中是否有两种类型的成员初始值设定项列表?

Android:是否可以将 ZIP 文件添加为原始资源并使用 ZipFile 读取它?

android - 解决 'application has stopped' 崩溃错误

c++ - 正确校正 GPU 的立体图像(opencv)

c++ - 如何在 QML 中编辑 QQmlListProperty

file - 如何启用 FFMPEG 日志记录以及在哪里可以找到 FFMPEG 日志文件?

Java SFTP 客户端 - 概念

c# - 通过 WPF 发送电子邮件使应用程序关闭

ios - 由于取消引用垃圾指针导致应用程序崩溃

c++ - 从分层窗口获取 HBITMAP - 不正确的数据