0

我正在使用两个使用相同 dll 文件的程序。第一个程序的代码丢失了,第二个程序是我正在编写的。有问题的 dll 用作某种包装 dll

好吧,这两个程序大部分时间都很好。但是有时会发生冲突,因此程序会停止。通过反复试验,我现在确信它与调用此 dll 的那两个程序有关(仅作为记录,还有第三个程序使用该 dll,但我们禁用了该程序)。它必须与两个程序如何使用dll有关。

所以我想知道,是否有一些工具可以让我监控 dll 并告诉我它是如何被调用的;
调用了哪些函数;显示参数;如果它不是 void 返回的类型和结果是什么。

通常我会通过代码一步一步地通过视觉工作室跟踪来做到这一点。但是由于第一个程序(包括那个 dll)的代码丢失了。我无法跟踪它,我想调试发生了什么,然后如果我知道错误情况,然后在我的新程序中构建一些东西以防止这种情况再次发生。

4

2 回答 2

1

如果此 DLL 是 .NET 的,那么您可以使用 .NET Reflector 或 dotPeek (www.jetbrains.com) 对其进行反编译。然后您可以添加您的跟踪代码并再次编译它。您还可以使用 PostSharp ( http://www.sharpcrafters.com ) 添加跟踪代码。

如果它不是 .NET dll,那么您仍然可以使用任何其他汇编器调试器来调试它,即http://www.ollydbg.de

于 2013-02-21T13:14:18.077 回答
1

如果您有源代码和 BIN 目录中的 .pdb 文件,那么您可以通过该代码进行调试。但是,您需要在 Visual Studio 中启用外部代码调试。

然后,您可以在菜单 Debug--> Windows --> Modules 中检查 dll。

导航到 dll 并查看符号文件是否有任何问题。

于 2013-02-21T15:40:39.510 回答