如何从 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 中的事件

如何使用 SQL 在 Microsoft Access 2013 中创建查找字段?

SQL 服务器上的 Microsoft Access 死锁

使用 Microsoft Access 中的两个表单将参数从一个组合框传递到另一个组合框