我正在开发一个多线程应用程序,它通常运行良好。
现在看来子线程正在崩溃,通过配置 Visual Studio 以抛出 C++ 异常,我发现了以下有关异常的信息:
ExceptionCode : 3765269347
ExceptionFlags : 1
ExceptionRecord : <NULL>
ExceptionAddress : 0x0000...0
NumberOfParameters : 4
params:
magicNumber : 429065504
pExceptionObject : 0x... (some memory address)
pThrowInfo : 0x... (some memory address)
{<application.exe>_Tl3?AVC_IOException@@ ...
attributes : 0
pmfnUnwind : 470560
pForwardCompat : 0
pCatchableTypeArray : 6451800
pThrowImageBase : 0x... (some memory address)
{<application.exe>_IMAGE_DOS_HEADER_ImageBase}
(我尽量抄的好,有错别喷)
我一直在互联网上寻找提到的异常代码,但我不明白其中的解释,我搜索了提到的 AVC_IoException
但我没有找到任何东西。有人知道我在这里能做什么吗?
供您引用,当我尝试将某些内容写入缓冲区时抛出异常(供您引用,此缓冲区不是 NULL),它似乎与任何 DLL 文件的加载无关(我已经把在每个 loadlibrary()
函数处设置断点,但没有一个被调用)。
特此这段代码(这是一个递归函数,将一些东西写入缓冲区):
virtual void fillBuffersBeforeWrite(const <internal_struct>* pDsp,
size_t nByteCount)
{
<internal_class>* w = writer();
if (w && (w != this)) {
w->fillBuffersBeforeWrite(pDsp, nByteCount);
}
}
提前致谢
最佳答案
try catch 抛出异常的代码: 在 MS Visual Studio 2015 中,调试 -> Windows -> 异常设置,选择“C++ 异常”,右键单击“添加异常”,插入异常类型 - “AVC_IoException";还标记其他常见异常类型 - std::exception、CException 等。 调试器将在抛出异常的地方停止。您可以分析堆栈。请注意,您可能需要跳过(即要求调试器继续)不相关的异常。 保留所有 3d 方的调试版本也是一个好主意,包括 C++/C 运行时和操作系统。
关于c++ - 如何处理 C++ 异常 3765269347,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40651101/