如何在Delphi中调试从Java调用的DLL?

4

我用Delphi编写了一个DLL,可以通过JNA (Java Native Access)从Java中调用。这个DLL中的方法只是简单的操作,但为了将来的使用和更复杂的调用,我想知道如果直接从Java(或从Java IDE)调用DLL,我该如何使用Delphi调试器。


要调试 DLL,您必须指定一个宿主应用程序(如消息所示)。您可以通过菜单“开始” - “参数”来完成。 - Uwe Raabe
3个回答

4
我相信这个问题的答案与 Stack Overflow 上的问题 如何在 Delphi 中调试 DLL 文件 是一样的。实际上,由于您是在 Delphi 环境下调试 Delphi 的 DLL 文件,因此调用堆栈中的高层级并不重要。

0

-2
为什么不先在Delphi中调试DLL呢? Delphi有一个名为DUnit的单元测试框架。您仍然需要为整个系统编写集成测试,但是您可以在JUnit单元测试中模拟外部依赖项。

1
古谚说:“证明布丁的好坏在于品尝” - 通过从Java调用DLL,可以分析错误,例如使用错误的数据类型、指针等。当然,DUnit测试可以作为额外的安全保障。JUnit测试将覆盖DLL的集成以及Java端相关操作,如果这个集成测试失败,就需要分析数据流。 - mjn
@mjustin:我完全同意你需要集成测试。我所建议的是除此之外,还要对类进行隔离测试(单元测试)。你可以两全其美! :) - TrueWill
2
如果您模拟外部依赖项(DLL),那么它就不再是一个很好的集成测试了。您基本上已经回答了如何调试Java调用的DLL的问题,建议调试一个*未被Java调用的DLL。 - Rob Kennedy
1
@罗布:正如我已经说过两次的那样,这是除了集成测试之外的。OP询问了关于调试DLL的问题。单元测试是减少代码中错误的好方法。单元测试的核心原则是在隔离状态下测试类(以及由此延伸的DLL)。我希望我的集成测试能够正常工作 - 因为我已经通过单元测试消除了任何错误。请参见http://c2.com/cgi/wiki?UnitTestIsolation。 - TrueWill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接