混合模式程序集未加载本机 C++ pdb 的符号

2023-11-25

我正在使用 C++/CLI 中的混合模式程序集。在混合模式组装中成功时,所有托管模式组装的 pdb 都会被加载,但即使本机 pdb 的信息显示在“模块”窗格中(即在 VS 调试 -> Windows -> 模块中),也不会加载本机 dll 和 pdb。

我正在使用本机 dll 并在 C++/CLI 代码中的混合程序集中调用其导出函数。在这里,函数被成功调用,但本机 pdb 符号未加载,本机代码中的所有断点都显示为空心圆圈,并且工具提示显示没有为此加载符号。

我已经完成了所有操作,将 pdb 放置在托管进程启动的当前目录中;删除所有 obj 和 debug 文件夹并同时重新编译每个项目;我什至使用了 ChkMatch 实用程序,它显示 Exe 中的符号与相应的 pdb 匹配。

有没有办法在从托管(C++/LCI 混合模式)代码调用时启用本机代码的断点?

Regards,

Usman


混合模式调试有时会出现失误,但大多数情况下会出现失误。首先检查您是否确实启用了混合模式调试。对于 C# 项目,它是“项目 + 属性”、“调试”、“启用非托管代码调试”复选框。接下来,不为 64 位进程启用混合模式调试。如果您在 64 位操作系统上运行,请确保强制 .exe 在 32 位模式下运行。项目 + 属性,构建选项卡,平台目标 = x86。

接下来验证调试器在何处查找 .pdb 文件。在“调试”+“Windows”+“模块”窗口中,右键单击 DLL 并选择“符号加载信息”。最后喘息的是在非托管代码中使用 __debugbreak() 。


更新:VS 的最新版本(从 VS2012 开始)有一个新的托管调试引擎,与非托管调试引擎不够兼容。工具 > 选项 > 调试 > 常规,勾选“使用托管兼容模式”。它启用旧版调试引擎,即 VS2010 中最后使用的引擎。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

混合模式程序集未加载本机 C++ pdb 的符号 的相关文章

  • gnu c++ 中是否有 __if_exists 的等效项?

    if exists 是微软特定的关键字 用于在编译时测试标识符的存在 msdn if exists http msdn microsoft com en us library x7wy9xh3 aspx 它在 伪造 模板专业化方面非常方便
  • 如何重定向 Visual Studio 调试器的输出?

    在 Visual Studio 2008 中 我可以指定命中断点时要打印的消息 通过右键单击断点并选择 命中时 当程序运行时 这些消息出现在输出窗口中 我想知道有什么办法可以将它们重定向到文件吗 指定 gt file txt作为程序的命令参
  • 断点改变程序流程

    我正在尝试分析和逆向我拥有的 Objective C 程序 我通过手动更改一些操作码对可执行文件进行了一些修改 然而 当我测试修改后的软件时 我得到 死亡人数 9 没关系 我想我触碰了不该触碰的东西 我当时就推出了gdb myprogram
  • Chrome JavaScript 调试 - 如何在页面刷新之间保存断点或通过代码中断?

    当使用 Chrome 及其 JavaScript 调试器时 每次重新加载页面 脚本时 我的断点都会丢失 我必须在弹出窗口中查找脚本文件 找到断点的代码行 单击添加它 ETC 有没有办法保存这些断点 以便即使在页面刷新后它也会中断 我使用过的
  • 为什么 godbolt 生成的 asm 输出与我在 Visual Studio 中的实际 asm 代码不同?

    这是生成的代码godbolt https godbolt org z 1F1t6Z 以下是 Visual Studio 在我的 main asm 文件上生成的相同代码 通过 汇编器输出 字段下的 项目 gt C C gt 输出文件 gt 使
  • 多线程应用程序断点

    如果我对多线程应用程序设置断点 会发生什么情况 它是否停止所有线程 仅停止断点的线程 还是整个程序崩溃 如果可能的话 我是否只想停止一个线程 或者这会弄乱我的应用程序 如果我无法对多线程应用程序进行断点 我可以使用哪些调试技术 JAVA 就
  • vs2010 C++ 尾调用优化

    考虑以下代码 int fac aux int x int res if x 1 return res else return fac aux x 1 res x int fac int x return fac aux x 1 int ma
  • “向量迭代器+偏移量超出范围”断言有用吗?

    这个完美的程序在 Visual Studio 2013 的调试模式下失败了 include
  • 错误 C2601:“main”:本地函数定义非法 - MS VS 2013 编译器

    我正在用 C 编写一个小程序 当我尝试使用 MS VS 2013 编译器编译它时 出现错误 C2601 main 本地函数定义非法 这是什么意思 我的代码是 include
  • C++ 虚(密封)函数

    我在我的 C 项目中使用 dll 中的类 一切都工作正常 直到 当尝试调用某个方法 在对象浏览器中列出 时 我收到一条错误消息 指出该方法不是命名空间的成员 经过调查 我注意到该方法被列为 virtual void x seal 有没有办法
  • 我的绘图存在坐标/glortho 问题

    I have made a bit of a change to my code in the last couple of hours as everything was messy with my grid so I made it i
  • 如何在 C++/CLI 中显式/隐式实现接口成员?

    在 C CLI 中与此等效的内容是什么 class Explicit IClonable void IClonable Clone class Implicit IClonable public void Clone 正如 nobugz 所
  • 通过pip安装lxml时出错:需要Microsoft Visual C++ 14.0

    我使用的是 Windows 10 机器 最近从 python 2 7 迁移到 3 5 当尝试通过 pip 安装 lxml 时 它会停止并抛出此错误消息 构建 lxml etree 扩展错误 需要 Microsoft Visual C 14
  • 如何从 dll 导出 C++ 类? [复制]

    这个问题在这里已经有答案了 我有一个有两个重载函数的类 如何从 dll 导出它以及如何由其他 C 类使用它 我的班级是这样的 define DECLDIREXP declspec dllexport define DECLDIRIMP de
  • C#.NET VS2010 断点不起作用

    当我去调试代码时 所有断点都被透明填充 只留下轮廓 并且中间有一个感叹号的小三角形位于断点的角落 当我将鼠标悬停在断点上时 错误是 当前不会命中断点 源代码与原始版本不同 我在一个多小时内没有尝试调试我的代码 在此期间我添加了一个具有多个线
  • C++ 检查 unicode 字符是否为全角

    如何检查unicode字符是否是全角 我使用Win32 MFC 例如 中是全宽 A不是全角 是全宽 F不是全宽 你需要的是检索东亚宽度 http www unicode org reports tr11 的角色 您可以通过解析来做到这一点东
  • 获取已安装的 Windows 应用商店应用程序列表

    有多种方法可以获取控制面板中 添加 删除程序 中已安装应用程序的列表 但我也想从 Windows 应用商店获取已安装应用程序的列表 到目前为止我还没有得到任何东西 有什么方法可以获取从 Windows 应用商店安装的应用程序列表吗 您可以在
  • 指向成员函数的指针的大小疯狂变化

    有一个非常微妙的问题 得到一个用 MS VS 2013 c 编译器编译的类 对于 32 位平台 大小为 4 个字节 函数指针的大小为 4 个字节 但是 当这个类使用相同的编译器编译但包含到不同的项目中以生成库时 也针对 32 位平台 则该类
  • C++/CLI 在运行时显式加载托管 DLL(相当于非托管的 LoadLibrary)

    问题一 有没有办法在 C CLI 中在运行时而不是在编译时显式加载库 目前我在编译时使用 NET 添加引用 我想显式加载托管 dll NET 中是否有 LoadLibrary 的等效项 Update 感谢兰多夫 Assembly LoadF
  • unsigned char* 缓冲区到 System::Drawing::Bitmap

    我正在尝试创建一个工具 资产转换器 使用以下命令将字体光栅化为 XNA 游戏的纹理页面自由类型2 http www freetype org freetype2 index html engine 下面 第一张图片是FreeType2的直接

随机推荐