0

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

我尝试了一个简单的测试应用程序,它从 windbg.exe 中调用了一个 dll。这很好用。当我将 labview 添加到 mix 中时,windbg 当然会开始给出 ERROR: Symbol file not found for all the labview stuff。我确定我设置了正确的符号文件目录,并且还设置了源文件夹。我是windbg的新手,但我开始收集这一点,除非你拥有所有你使用它的符号文件。那是对的吗?如果是这样,我想它又回到了 fprintf 和有限的调试。

我不想使用 Visual Studio,因为这是用于半嵌入式应用程序的,它根本没有磁盘空间/空间来容纳所有 Visual Studio。

4

3 回答 3

2

您需要将 windbg 附加到 LabVIEW 进程,然后在 DLL 代码中设置断点。这样,您只会在它到达您的代码时中断。这就是它在 Visual Studio 中的工作方式,快速搜索似乎表明它也适用于 windbg。

于 2009-10-30T18:32:40.847 回答
2

如果您只打算在 DLL 中设置断点和任何内容,您不一定会感到厌烦。那应该可以正常工作。从您的 DLL 到 LabVIEW 映像的堆栈跟踪将开始抱怨,但希望它是您不感兴趣的东西,您可以忽略它。

于 2009-10-30T18:33:51.233 回答
1

您还可以在windbg 中设置断点,以便在加载DLL 后立即中断。为此,请将 windbg 附加到 Labview 进程并使用以下命令:(您的 dll 的名称在sxe ld foo哪里)。foo这告诉调试器在 dll 加载事件发生时中断,特别是针对您的 dll。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/cc266379.aspx。当您点击此断点时,您可以确定要在代码中中断哪个符号以进行调试。

于 2009-11-03T03:58:03.760 回答