我正在尝试调试由Labview应用程序调用的dll。我有正确的符号文件(从微软下载),像ntdll.dll和其他东西。当然,我还有用于我的DLL的pdb文件。显然,我没有任何labview的符号文件;因为据我所知,National Instruments没有发布。
我尝试过一个简单的测试应用程序,它从windbg.exe内部调用一个动态链接库。这样做效果很好。当我将labview添加到混合中时,windbg当然会开始给出错误:所有的labview内容都没有找到符号文件。我确信我设置了正确的符号文件目录,也设置了源文件夹。我在某种程度上是windbg的新手,但我开始意识到,除非你有使用它的所有符号文件。对吗?如果是这样,我猜它又回到了fprintf和有限的调试。
我不想使用visual studio,因为这是一个半嵌入式应用程序,它没有足够的磁盘空间来容纳所有的visual studio。
发布于 2009-10-31 02:33:51
如果您只计划在DLL中设置断点和其他任何东西,那么您不一定会遇到麻烦。这应该可以很好地工作。从DLL返回到LabVIEW映像的堆栈跟踪将开始抱怨,但希望它是您不感兴趣的东西,您可以忽略它。
发布于 2009-10-31 02:32:41
您需要将windbg附加到LabVIEW进程,然后在DLL代码中设置断点。这样,您只会在到达代码时中断。这就是它在Visual Studio中的工作方式,快速搜索似乎表明它也适用于windbg。
发布于 2009-11-03 11:58:04
您还可以在windbg中设置断点,使其在加载DLL时立即中断。为此,将windbg附加到Labview进程并使用以下命令:sxe ld foo(其中foo是您的dll的名称)。这将通知调试器在发生dll load事件时中断,特别是对于dll。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/cc266379.aspx。当您到达此断点时,您可以确定要在代码中中断哪个符号以进行调试。
https://stackoverflow.com/questions/1651525
复制相似问题