如何从 Microsoft Access 调试 dll
Posted
技术标签:
【中文标题】如何从 Microsoft Access 调试 dll【英文标题】:how to debug dll from Microsoft Access 【发布时间】:2016-10-12 00:02:13 【问题描述】:我有一个使用 Visual Studio 2013 的 c++ 项目。它编译一个 dll。
该 dll 由 Microsoft Access 项目调用。 在 Microsoft Access 项目中,我们为 dll 准备输入,并声明要调用哪个 dll,并使用准备好的输入调用 dll。dll 将输出返回给 Access。
我的目标是能够单步调试 c++ 代码,因为我想改进 c++ 代码。
关于如何从 Access 调用 dll 并单步执行 c++ 代码的任何建议?
【问题讨论】:
msdn.microsoft.com/en-us/library/ms164704.aspx。 TL;DR 版本:构建 DLL 的调试版本。根据需要放置断点。启动访问项目以使用 DLL。从 Visual Studio 主菜单中选择调试 -> 附加到进程。使用 DLL 查找并选择 Access 进程(让您自己轻松,并且只运行一个)。单击附加按钮。强制访问使用 DLL。等待断点。 项目 > 属性 > 调试 > 命令设置。从 Office 安装目录中选择 MSAccess.exe。设置断点,按 F5。 @user4581301 你想把你的评论作为答案吗? Hans Passant 的评论是一个更好的解决方案。这是 MSalters 现有答案的更简洁和直接的版本。建议您将复选标记给 MSalters,并在附加方法上使用它。真希望我知道几年前我能做到这一点。 【参考方案1】:Visual Studio 调试器在调试 DLL 时允许您选择将加载该 DLL 的可执行文件。因此,找到 MS Access 可执行文件,并指定该路径。然后像往常一样放置一个断点,以指示要从哪里开始调试。
【讨论】:
需要获取debug版本的dll,然后确保Access调用的是debug版本的dll @Lisa:Visual Studio 调试器会很高兴地进入发布版本,当然假设断点位于未优化的代码中。不过,调试版本更容易。【参考方案2】:除了 MSalters 的正确答案之外,您还可以按常规方式启动 Access,并附加到正在运行的进程。在 Visual Studio 中,它位于菜单下,Debug/Attach...
如果 Access 加载 DLL 的调试版本,DLL 源中的行断点将在执行时中断到 Visual Studio,正如预期的那样。
【讨论】:
以上是关于如何从 Microsoft Access 调试 dll的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Excel>Python>Microsoft Access 传输数据
从 Windows DataGridView DataTable C# 创建 Microsoft Access 表
从 DoCmd OpenReport 打印报表时触发 Microsoft Access 中的事件