我正在尝试调试Labview应用程序调用的dll。我有正确的符号文件(从微软下载)用于ntdll.dll等。我当然也有我的DLL的pdb文件。显然,我没有的是labview的任何符号文件;据我所知,NI不会发布。
我尝试过一个简单的测试应用程序,在windbg.exe中调用一个dll。这很好用。当我将labview添加到混合windbg当然开始给出ERROR:找不到所有labview东西的符号文件。我确信我已经设置了正确的符号文件目录,并且也设置了源文件夹。我对windbg来说是个新手,但是我开始收集它,除非你有使用它的所有符号文件。那是对的吗?如果是这样,我想它回到了fprintf和有限的调试。
我不想使用visual studio,因为这是一个半嵌入式应用程序,它没有足够的空间/空间来容纳所有的visual studio。
答案 0 :(得分:2)
您需要将windbg附加到LabVIEW进程,然后在DLL代码中设置断点。这样,只有在到达代码时才会中断。这就是Visual Studio的工作原理,快速搜索似乎表明它也适用于windbg。
答案 1 :(得分:2)
如果您只计划在DLL中设置断点和其他内容,则不一定要使用。这应该工作正常。从你的DLL回到LabVIEW图像的堆栈跟踪将开始抱怨,但希望它是你不感兴趣的东西,你可以忽略它。
答案 2 :(得分:1)
您还可以在加载DLL时立即在windbg中设置断点。为此,请将windbg附加到Labview进程并使用以下命令:sxe ld foo
(其中foo
是您的dll的名称)。这告诉调试器在dll load事件发生时中断,特别是对于你的dll。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/cc266379.aspx。当您点击此断点时,您可以确定要在代码中打破哪个符号进行调试。