关于在Labview中调用dll使用windbg的问题

时间:2009-10-30 18:26:03

标签: c dll windbg labview

我正在尝试调试Labview应用程序调用的dll。我有正确的符号文件(从微软下载)用于ntdll.dll等。我当然也有我的DLL的pdb文件。显然,我没有的是labview的任何符号文件;据我所知,NI不会发布。

我尝试过一个简单的测试应用程序,在windbg.exe中调用一个dll。这很好用。当我将labview添加到混合windbg当然开始给出ERROR:找不到所有labview东西的符号文件。我确信我已经设置了正确的符号文件目录,并且也设置了源文件夹。我对windbg来说是个新手,但是我开始收集它,除非你有使用它的所有符号文件。那是对的吗?如果是这样,我想它回到了fprintf和有限的调试。

我不想使用visual studio,因为这是一个半嵌入式应用程序,它没有足够的空间/空间来容纳所有的visual studio。

3 个答案:

答案 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。当您点击此断点时,您可以确定要在代码中打破哪个符号进行调试。