【问题标题】:C# and MASM dll library how to debug?C#和MASM dll库如何调试?
【发布时间】:2013-01-27 13:52:45
【问题描述】:

说明

我的项目有点问题,据说 - 我无法调试加载到用 C# 编写的程序的 dll(用 MASM 编写)。我确实在 dll 中程序的各个位置留下了断点,但没有任何反应。程序执行只是通过过程而不会停止。

我使用 Visual Studio 2010 并具有以下解决方案结构:

Solution
|
+--+ the masm dll project
|  |
|  +- *.asm 
|  |
|  +- *.def
|
+--+ C# dll library poject 
|  
+--+ my C# project

因此,我可以访问 dll 的源代码,并且它的项目与调用项目位于同一解决方案中。

但是,当我在 C# 库项目中设置断点时,它可以工作。

我仍然无法调试这个虫子。谁能指出我解决问题的方法?

解决方案

Camford提供

为了能够调试非托管 dll(不仅是 masm、nasm 等),您所要做的就是启用非托管代码调试,这是通过以下方式完成的(在 VS2010 中):

启用非托管代码的调试

  1. 在解决方案资源管理器中选择项目后,在“项目”菜单上单击“属性”。
  2. 单击“调试”选项卡。
  3. 选中启用非托管代码调试复选框。

(来自here

【问题讨论】:

  • 我不知道 Visual Studio 能够直接进入 MASM 源文件。当它崩溃时,它将直接进入反汇编,它将是纯 ASM,没有花哨的 MASM 宏。
  • 老实说,这对我来说确实有用,但它也不会发生!执行只是通过断点,就像没有设置它们一样。

标签: c# debugging dll masm


【解决方案1】:

您需要在您的 c# 项目的调试设置中启用非托管代码调试。如果这仍然不起作用,因为你有 asm 代码,你可以在你的 asm 中插入 int 3 作为硬编码的中断指令,然后重建你的 dll。

【讨论】:

    猜你喜欢
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多