- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试从 native C++ 可执行文件调试 C# dll。我有一个 C# COM 对象,它通过 IDispatch 从 native 代码加载和运行。一切都在调试中构建,包括 C# 和 C++ 代码。虽然我可以看到所有的 c++ 代码,并且所有的 c++ dll 都加载了它们的符号并可用于调试、断点等,但 C# 代码拒绝播放。
我看到的是 C# dll 都拒绝加载它们的符号 pdb,并在模块窗口中报告“skipped loading symbols for ngen binary”。
顺便说一句,我在这里调试 C# 解决方案,我在 COM 项目的调试设置中将 native 可执行文件设置为“启动外部程序”。
现在我可以启动 C++ 可执行文件,然后附加到它,然后一切都按我预期的那样工作 - 符号加载,我可以在 C# 中设置断点。
这是使用 Visual Studio 2013u4。是否有启用混合模式调试的设置?一个小问题是 native 代码是使用 VS2010 构建的。
这是模块窗口 - 请注意所有 pdb 和 dll 都在一个目录中,您可以看到已加载的 c++ dll,但看不到 C# 的。
这是模块窗口 - 注意 EvCom dll(COM 对象)的第 3 个条目,我假设它是启用调试的条目。
Output 窗口中没有任何感兴趣的内容,当加载 COM dll 时,我看到以下内容(在附加到正在运行的进程的情况下,另一个只有 2 行而不是 3 行)。
'Explorer.exe' (Win32): Loaded 'C:\Dev\...\lib\debug\EvCom.dll'.
'Explorer.exe' (Win32): Loaded 'C:\Dev\...\lib\debug\EvCom.dll'.
'Explorer.exe' (Win32): Unloaded 'C:\...\lib\debug\EvCom.dll'
'Explorer.exe' (Win32): Loaded 'C:\Dev\...\lib\debug\EvCom.dll'.
一件有趣的事——我检查了调试设置中的“使用托管兼容模式”,并认为它在开始调试时仍然没有加载我的符号,它只在模块列表中显示 1 个条目。这次为 C# dll 说“符号文件中没有 native 符号”。
看起来问题是无法在 VS2013(或 2012)中选择调试器类型。 This connect article建议其“按设计”和一些变通办法。
最佳答案
原来这一切都归功于 .NET 4.0 调试引擎的变化
.NET 4 及更高版本使用与 .net 3.5 及以下版本不同的调试引擎,当您开始调试 native 应用程序时,调试器将为您选择一个 .net 调试器(默认为 .net 4.0),如果您的 .net dll是使用这个平台构建的,一切都会好起来的——断点会被击中。
如果您加载的 dll 是 .net 3.5,那么调试引擎将无法理解加载的 dll,并且会拒绝加载符号或调试。
解决方案要么重建为 .net 4,要么启动 native 可执行文件并附加到它(您可以在其中选择调试器类型,“旧”.net 或"new".net),或者您可以创建一个从可执行文件中创建项目并设置其调试设置以指定正确的调试器。
我觉得恼人的是,Microsoft 可以很容易地使用您正在调试的项目中指定的 .NET Framework 类型启动调试器(毕竟,在调试 dll 并指定外部程序时,您仍然想调试dll 你按 F5 键,所以你知道要使用什么调试器!)(更烦人的是,一旦在加载的 dll 中启动托管调试,你就可以进入使用构建的项目较旧的 .net 框架没有问题)。
有关 this Microsoft connect 的更多详细信息文章
关于c# - "skipped loading symbols for ngen binary"用于 C# dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169558/
我们的开发环境是这样配置的,当我们运行代码的调试版本时,它会在崩溃或 ^C 时进入 gdb。随着最近的一些更改,这种情况不再发生(退出程序而不是进入 gdb),我怀疑符号大小的增加导致了这个问题。 有
刚刚浏览了一个教程,想到了我看到的地方 first_name: 还有一个地方 :first_name 这样对吗?有什么区别? 最佳答案 哈希语法在 Ruby 1.9.2 中发生了变化,以更接近 jso
这里是一个相当抽象的问题,因为我不知道从哪里开始我自己的调查。 我有一个用 CMake 构建的 C 包,它生成 librpdb.so;我为同一个库设置了一个 Ruby Gem,它生成 rpdb.bun
我尝试使用 Symbol 创建对象键并用 Symbol.for 找到对应的值,但它不起作用: const sym = Symbol("x"); let obj = { [sym]: "val" }
这可能是一个愚蠢的问题,但我很高兴知道为什么我们使用带有一些标志的短形式的单符号和带有完整标志的双符号? 例子: 1) -h & --help 2) -f & --force 谁能解释一下原因? 最
我们希望能够在删除物理构建区域时删除符号服务器内容,symstore del 命令对事务 ID 起作用。这是未知的。 How to extract the transaction ID based o
我在一个我不太理解的小程序上遇到这个问题(我对节点红色有点陌生),代码是 var profile = msg.user.profile; var cart = profile.cart = pr
我正在尝试创建一种工资单以在控制台中打印,但我从代码中收到以下错误。很多时候它实际上只是一个错误,但我认为我没有足够的 java 知识来自己修复它。 import java.io.*; import
在 C# 项目中,我在 UnhandledException 中创建了小型转储。在我的 Dev 机器中,项目源和 bin 位于路径 K:\projects\*MYPROJECT* 下,如果我设法让它在
我正在尝试针对另一个使用 libcurl 共享库的共享库 (libtheirstuff.so) 交叉编译我自己的共享库 (libmystuff.so),但出现以下错误: libmystuff.so:
我试图遍历一个数组来检查它是否包含任何通过指定函数的项目。我通过向 Array 对象添加一个 .any() 原型(prototype)来做到这一点: Array.prototype.any = (co
除了这个 undefined symbol 错误外,一切正常: bash-3.2$ make g++ -Wall -g solvePlanningProblem.o Position.o AStarN
我 rsync 目录“Promotion”包含两台具有不同目录结构的机器之间的绝对符号链接(symbolic link)。因此绝对符号链接(symbolic link)在两台机器上都不起作用。为了使它
我有以下 JSX - What is your e-mail address? setStateForProperties(e)}
根据 SVG 的 symbol文档,我可以添加 refX/refY属性给它。 如果我理解正确,我可以使用这些属性来定义符号坐标系中的引用点,因此当我使用 引用它时元素,它将相对于该引用点(而不是默认
请解释以下有关“找不到符号”,“无法解析符号”或“找不到符号”错误的信息: 是什么意思? 什么原因可以导致它们? 程序员如何解决它们? 该问题旨在对Java中的这些常见编译错误进行全面的问答。 最佳答
请解释以下有关“找不到符号”,“无法解析符号”或“找不到符号”错误的信息: 是什么意思? 什么原因可以导致它们? 程序员如何解决它们? 该问题旨在对Java中的这些常见编译错误进行全面的问答。 最佳答
请解释以下有关“找不到符号”,“无法解析符号”或“找不到符号”错误的信息: 是什么意思? 什么原因可以导致它们? 程序员如何解决它们? 该问题旨在对Java中的这些常见编译错误进行全面的问答。 最佳答
请解释以下有关“找不到符号”,“无法解析符号”或“找不到符号”错误的信息: 是什么意思? 什么原因可以导致它们? 程序员如何解决它们? 该问题旨在对Java中的这些常见编译错误进行全面的问答。 最佳答
请解释以下有关“找不到符号”,“无法解析符号”或“找不到符号”错误的信息: 是什么意思? 什么原因可以导致它们? 程序员如何解决它们? 该问题旨在对Java中的这些常见编译错误进行全面的问答。 最佳答
我是一名优秀的程序员,十分优秀!