Vb.net 如何调试Visual Studio 2013中引用的DLL文件?

Vb.net 如何调试Visual Studio 2013中引用的DLL文件?,vb.net,debugging,dll,visual-studio-2013,Vb.net,Debugging,Dll,Visual Studio 2013,首先,我知道这个问题已经在各地被问了一百万次,但由于我没有VB/Visual Studio的经验,我找不到一个我能理解的解决方案 我正在创建一个新的VB.net projectsolution?,并正在调用dll文件中的C库函数。dll文件确实有一个pdb文件,它们都存储在同一位置 在下面的代码中,它显示了我如何在VB.net代码中声明函数,但我还没有弄清楚如何将pdb文件附加到项目中 Declare Function InitRelay Lib "Z:\Devel\RelayAPI\Debug

首先,我知道这个问题已经在各地被问了一百万次,但由于我没有VB/Visual Studio的经验,我找不到一个我能理解的解决方案

我正在创建一个新的VB.net projectsolution?,并正在调用dll文件中的C库函数。dll文件确实有一个pdb文件,它们都存储在同一位置

在下面的代码中,它显示了我如何在VB.net代码中声明函数,但我还没有弄清楚如何将pdb文件附加到项目中

Declare Function InitRelay Lib "Z:\Devel\RelayAPI\Debug\RelayAPI.dll" (ByVal setbaud As Action(Of Short), ByVal getit As Func(Of Short, Short), ByVal putit As Action(Of Short), ByVal flushit As Action, ByVal delay As Action(Of Short)) As Byte
Declare Sub FreeRelay Lib "Z:\Devel\RelayAPI\Debug\RelayAPI.dll" ()
...
我在DLL文件中的某个地方遇到异常,但按照我的设置方式,我无法调试DLL文件。无论是添加断点还是打印语句,我都需要一种方法来查看项目在dll中失败的位置

我看到的问题是:

-我尝试按照接受答案中给出的菜单路径进行操作,但是当我转到Project>>项目属性时,我没有看到任何构建选项。它还说,如果我不想复制任何文件,我可以直接在IDE中加载符号,但我找不到关于如何执行的解释。编辑-正如下面的Proputix所说,C构建相当于VB的编译选项卡。我检查了,并且我的调试信息设置为完整,所以这并不能解决我的问题。 -这讲的是.NET语言中的DLL,但我的是C语言。它也只告诉您如何查看代码,我已经可以这样做了。我可以访问用于创建dll的.c和.h文件,但我无法在运行时调试它们。
调试DLL时,可以从以下位置开始调试: 用于创建调用DLL的可执行文件的项目。 -或- 用于创建DLL本身的项目

有几种方法可以使用VS2013调试参考DLL文件,因此这里是Microsoft使用的方法

->为调试会话指定可执行文件的步骤

在解决方案资源管理器中,选择创建DLL的项目。 从“视图”菜单中,选择“属性页”。 在“属性页”对话框中,打开“配置属性”文件夹并选择调试类别。 在命令框中,指定容器的路径名。例如,C:\Program Files\MyApplication\MYAPP.EXE。 在“命令参数”框中,指定可执行文件的任何必要参数。 这里我介绍了两种不同的方法,用于直接从Microsoft调试DLL文件

1> 本机模式

2> 混合模式

如果这对你有任何帮助或解决了你的问题,请务必放弃投票


参考。所有信息都来自个人经验,Microsoft的属性选项卡在VB和C中是不同的。C有一个Build选项卡代替VB的Compile。你是如何编辑/构建C项目的?谢谢你提供的信息,但没有解决这个问题。我刚刚检查了我的编译选项,该选项已设置为All。若要进入C DLL,假设符号可用,启用非托管调试项目道具->调试->选中启用非托管调试,然后确保仅禁用我的代码工具->选项->调试常规->取消选中启用我的代码注意名称可能会从一个版本更改为一个版本-这是针对VS2012的,它没有启用非托管调试,所以我选中了启用本机代码调试。这给了我一个新的错误,告诉我它找不到PDB文件。我可以将PDB文件拖到项目文件夹中吗?它已经位于与.dll文件相同的路径,我在问题中给出的代码中显示了该文件。您可以通过选项->调试->符号…或。。。默认情况下,将引用的文件复制到\Bin\文件夹;您可以在那里放置一个副本,它可以复制其他托管项目的任何PDB。它过去被称为启用非托管调试,很抱歉,我已经多次阅读了MSDN页面。如果你读了我问的问题,这并不能回答它。作为将来的参考,将你在谷歌上得到的第一个结果改写成你的答案并不是回答问题的正确方式。谷歌结果转换成stackoverflow答案,嗯,这还不够聪明。