如何在excel退出期间调试c ++ excel插件的异常

ath*_*hos 7 c++ excel plugins visual-studio-debugging

我有一个用c ++构建的excel xll插件(并且在xlw的帮助下),运行得很好,除了excel退出时偶尔会发生异常.

我头痛的是,虽然它看起来像一些析构函数问题,但我看不出它出了什么问题.

Excel窗口刚关闭,然后弹出Windows系统错误消息.

即使我在Visual Studio调试模式下运行它,当异常发生时,它已经在STL c ++代码中,我也看不到我的代码的哪一部分,例如析构函数,是失败的根本原因.

确切地说,调用堆栈显示 [External Code]- > Excel.Exe- > [External Code]- > MSO.DLL...重复OART.DLL......重复... ntdll.cll- > [External Code]- > _cexit()- > common_exit- > __acrt_lock_and_call- > ...

与源可见的第一个步骤是exit.cppC:\Program Files (x86)\Windows Kits\10\Source\10.0.16299.0\ucrt\startup\exit.cpp,

extern "C" void __cdecl _cexit()
{
    common_exit(0, _crt_exit_full_cleanup, _crt_exit_return_to_caller);
}
Run Code Online (Sandbox Code Playgroud)

ARa*_*Rau 3

您是否尝试过在 Visual Studio 设置中设置条件断点以在任何异常(或您遇到的特定异常)时中断?您可以在退出 Excel 之前启用此功能。这可能有助于追踪问题,并在断点命中时在调用堆栈窗口中为您提供调用堆栈。

\n\n

另请确保检查您的符号文件 (.pdb) 是否正在为您的代码和任何第三方依赖项加载。另一件有用的事情是指定 Microsoft 公共符号服务器,以便加载 Microsoft 系统 pdb\xe2\x80\x99s 以及本文中提到

\n