VS2008可以调试COM dll吗?

2024-01-15

这可能是一个非常愚蠢的问题。
是否可以在 VS2008 中调试我没有源代码的 COM dll?

我想要这样做的原因是我将一个数组传递给 COM 方法,并且我希望该数组由该方法填充。
然而,该数组并未被填充。所以我想进入 COM 方法看看发生了什么。这可能吗?

下面是我正在使用的代码示例:

Array binaryArray = Array.CreateInstance(typeof(sbyte), 896);
bool success = photo.GetBinaryData(binaryArray);

IDL 为GetBinaryData method:

[id(0x000000c9)]
HRESULT GetBinaryData(
                [in] SAFEARRAY(char) buffer, 
                [out, retval] VARIANT_BOOL* retval);

The GetBinaryDatamethod 是我想要进入的 COM 方法。

编辑:添加一个有效的Delphi测试脚本

procedure TComTestForm.TestUserBtnClick(Sender: TObject);
var
  nCnt :integer;
  User :IUser;
  Persona :IUserPersona;
  ArrayBounds :TSafeArrayBound;
  ArrayData :Pointer;
  TagList :PSafeArray;
  nSize :integer;
begin
  User := Session.GetUser;

  ArrayBounds.lLbound   := 0;
  ArrayBounds.cElements := 0;

  TagList := SafeArrayCreate( varInteger, 1, ArrayBounds );
  User.GetTags( TagList );
  if SafeArrayAccessData( TagList, ArrayData ) = S_OK then
    begin
      nSize := TagList.rgsabound[0].cElements;
      OutLine( '----Available Tags, ' + IntToStr(nSize) + ' tags' );
  for nCnt := 0 to nSize - 1 do
    begin
  OutLine( IntToStr( IntegerArray(ArrayData)[nCnt] ) );
end;

大纲( ' - - ');

SafeArrayUnAccessData( TagList ); SafeArrayDestroy( 标签列表 ); 结尾;

end;


原则上是的,您可以逐条指令地单步调试 COM 方法实现的代码。

然而,即使您非常了解汇编并准确理解所有处理器指令的工作原理,以这种方式调试别人的代码也是一项艰巨的任务,除非它是一种非常非常简单的方法。

如果您是汇编程序新手,甚至不要考虑它,除非您准备好先进行几周的学习曲线。

如果 COM 方法似乎没有按照您根据其文档所期望的方式工作,我将首先尝试使用非托管代码(例如 C++)测试该方法,因为您的问题可能出在 COM Interop 编组中,而不是在COM 方法本身。

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

VS2008可以调试COM dll吗? 的相关文章

  • WinApi:获取 COM 表单的控件名称

    我想用 Net 框架替换我当前的 UI 自动化工具 QTP 我需要测试 VB6 COM 应用程序 框架的基础之一是使用表单名称 到目前为止 我未能找到使用 Win API 获取这些数据的方法 该解决方案只有一个约束 即该解决方案必须依赖 N
  • 如何在调试器中显示 TStringList 的内容?

    我想在调试应用程序时显示 TStringList 的全部内容 相反 我只是得到指示 Flist 仅显示地址 如果您使用的是 Delphi 2010 或更高版本 调试器允许使用调试可视化工具 http docwiki embarcadero
  • 如何在 Rust 中打印变量并让它显示该变量的所有内容,就像 Ruby 的 .inspect 一样?

    use std collections HashMap fn main let mut hash HashMap new hash insert Daniel 798 1364 println hash 将无法编译 error E0277
  • 在 Visual C++ 中创建“添加新项向导”

    也许我没有使用正确的关键字进行搜索 但我无法找到有关如何在 Visual Studio Community 2013 中为 C 项目制作自己的 添加新项向导 的文档 我想要实现的是能够将新的无扩展源文件添加到我的 C 项目中Project
  • Visual Studio Code 调试默认 ASP.NET Core MVC WebApp:不起作用

    我正在使用 Manjaro linux 并尝试调试默认的 ASP NET Core MVC 项目 但调试停止 没有任何错误 我创建了该项目 dotnet new mvc in a Meow文件夹 没什么特别的 然后添加了新的配置 NET C
  • printf() 使用字符串表“解码器环”调试库

    我写这封信是想看看你们中是否有人见过或听说过我即将描述的想法的实现 我有兴趣为嵌入式目标开发 printf 风格的调试库 目标非常遥远 并且我和目标之间的通信带宽预算非常紧张 因此我希望能够以非常有效的格式获取调试消息 通常 调试语句如下所
  • 如何在 gem 的示例脚本中使用 pry-byebug ?

    我正在制作我的第一个 gem 它不是 Rails 应用程序 而是一个带有一些 AI 的 tic tac toe 库 这样我就可以与一个永远不会输的计算机对手比赛 并在可能的情况下强行获胜 现在我正在尝试调试人工智能中的攻击策略 但我似乎无法
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 引用的程序集自动由 Visual Studio 替换

    我有 2 个项目 一个可移植类库和一个常规单元测试项目 在可移植类库中 我使用 NuGet 来引用 Microsoft BCL 可移植包 它附带 2 个程序集 System Threading Tasks dll and System Ru
  • 在python中实现COM接口类型库

    我有一个插件 我正在尝试为我工作的公司的应用程序创建一个示例 我正在尝试用 Python 编写这个插件 插件架构的工作方式是插件需要实现在提供的 COM 类型库中定义的接口 因此 它是该类型库的 COM 客户端 并最终通过应用程序为其提供后
  • 使用 GDB 调试 Rust

    我知道调试 Rust这里有关于 Stack Overflow 的问题 我之前也在 Go 中使用过 GDB 然而 我遇到了一个问题 GDB 似乎无法找到调试符号 考虑这个复杂的程序main rs pub fn main println run
  • Twitter 卡元标签问题

    有问题的网址 https www halleonard com viewpressreleasedetail action releaseid 10261 https www halleonard com viewpressreleased
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 使用 Visual Studio 调试器在值更改时中断

    有没有办法在变量上放置监视 并且仅在该值发生变化时让 Visual Studio 中断 这将使发现棘手的国家问题变得更加容易 这可以做到吗 断点条件仍然需要设置断点 我宁愿设置一个监视并让 Visual Studio 在状态更改时设置断点
  • Valgrind 输出中的错误摘要?

    我看过一些关于 valgrind 的帖子 但没有一篇帖子帮助我理解 valgrind 输出的解释 我用 valgrind 运行了两个程序 都有内存泄漏 测试 1 的示例输出 20422 LEAK SUMMARY 20422 definite
  • 我的 Visual Studio 2008 模板有什么问题?

    我正在尝试为 Visual Studio 创建自己的类模板 称为 公共类 我跟着有关如何手动创建项目模板的官方 MSDN 说明 http msdn microsoft com en us library ms247113 aspx几乎一字不
  • 在 Intellij-Idea 调试器中转储一个巨大的数组

    Idea 有没有办法将一个非常大的整数数组的内容转储到剪贴板中 数组上的 复制值 不返回任何内容 要使用复制值获取剪贴板中的值 您需要定义一个 Java 数据类型渲染器 来解释数组的内容 右键单击您的数组变量 选择 查看为 gt 创建 在
  • 如何使用 Visual Studio 2008 调试 CUDA 内核代码?

    嘿 我正在使用带有 CUDA 3 2 的 Visual Studio 2008 我正在尝试调试具有此签名的函数 MatrixMultiplication Kernel lt lt
  • 用 C# 制作 Vista 风格的应用程序

    我正在运行 Windows Vista 并且希望外观看起来像常规 Vista 程序 有没有关于如何构建 Vista 风格应用程序的真正好的教程 文章 我还想学习如何使用本机代码并将其转换为 C 如this http bartdesmet n
  • 在 Visual Studio 的 InstallShield 中创建 setup.exe

    Please tell me whether it is possible to create a file named setup exe I want to have the end user to a single file inst

随机推荐