首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当从本机win32应用程序调用C#COM程序集时,如何调试它?

当从本机win32应用程序调用C# COM程序集时,调试可以通过以下步骤进行:

  1. 首先,确保已经安装了.NET Framework和Visual Studio。
  2. 打开Visual Studio,然后打开需要调试的C# COM程序集项目。
  3. 在项目属性中,选择“生成”选项卡,然后将“输出路径”设置为COM程序集的安装路径。
  4. 在项目属性中,选择“调试”选项卡,然后将“启动操作”设置为win32应用程序的路径。
  5. 在项目属性中,选择“调试”选项卡,然后将“启动选项”设置为“启动外部程序”。
  6. 在项目属性中,选择“调试”选项卡,然后将“工作目录”设置为win32应用程序的路径。
  7. 在项目属性中,选择“调试”选项卡,然后将“调试器类型”设置为“混合”。
  8. 在项目属性中,选择“调试”选项卡,然后将“启用本机代码调试”设置为“是”。
  9. 在项目属性中,选择“调试”选项卡,然后将“启用Unmanaged代码调试”设置为“是”。
  10. 在项目属性中,选择“调试”选项卡,然后将“启用SQL Server调试”设置为“是”。
  11. 在项目属性中,选择“调试”选项卡,然后将“启用脚本调试”设置为“是”。
  12. 在项目属性中,选择“调试”选项卡,然后将“启用Web浏览器调试”设置为“是”。
  13. 在项目属性中,选择“调试”选项卡,然后将“启用Visual Studio 主机进程”设置为“是”。
  14. 在项目属性中,选择“调试”选项卡,然后将“启用属性Evaluation”设置为“是”。
  15. 在项目属性中,选择“调试”选项卡,然后将“启用Edit and Continue”设置为“是”。
  16. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Win32的调试”设置为“是”。
  17. 在项目属性中,选择“调试”选项卡,然后将“启用适用于ASP.NET的调试”设置为“是”。
  18. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Silverlight的调试”设置为“是”。
  19. 在项目属性中,选择“调试”选项卡,然后将“启用适用于XNA的调试”设置为“是”。
  20. 在项目属性中,选择“调试”选项卡,然后将“启用适用于WPF的调试”设置为“是”。
  21. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Windows Forms的调试”设置为“是”。
  22. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Natvis的调试”设置为“是”。
  23. 在项目属性中,选择“调试”选项卡,然后将“启用适用于GPU的调试”设置为“是”。
  24. 在项目属性中,选择“调试”选项卡,然后将“启用适用于JavaScript的调试”设置为“是”。
  25. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Python的调试”设置为“是”。
  26. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Unity的调试”设置为“是”。
  27. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Web的调试”设置为“是”。
  28. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Docker的调试”设置为“是”。
  29. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Kubernetes的调试”设置为“是”。
  30. 在项目属性中,选择“调试”选项卡,然后将“启用适用于Azure的调试”设置为“是”。
  31. 在项目属性中,选择“调试”选项卡,然后将“启用适用于AWS的调试”设置为“是”。
  32. 在项目属性中,选择“调
相关搜索:如何调试我的Safari应用程序扩展,当我从电子加载它?win32 GUI应用程序,当调用为"app.exe --help"时将使用文本写入stdout当控制台应用程序已关闭时,如何调用方法?当根本没有给出错误信息时,如何调试Laravel应用程序?当android应用程序打开JavaScript时,我如何编写运行它的html文件?如何在调试时从C#应用程序进入C/C++ DLL如何退出(退出) cordova (android)应用程序,当您从Inappbrowser单击后退按钮时?从在CentOS中的mono下运行的.NET应用程序调用本机linux库时,IL代码无效当从另一个JSP页面调用angular应用程序时,如何将数据发送到该应用程序?当从react应用程序向Google Drive API发送POST请求时,如何绕过CORS错误?如何将可以从Chrome调试器控制台调用的调试函数添加到创建React应用程序中?如何重新处理在null上调用的方法“findAncestorStateOfType”。从应用程序注销时?从应用程序调用存储过程时如何在sybase存储过程中使用print语句当Google Sheet未使用Google应用程序脚本打开时,如何从其他源更新导入范围数据Javafx应用程序- Robot操作无法在登录屏幕上执行-启动时卡住,当从main调用时需要移动到测试用例登录注销调用当新消息生成时,聊天应用程序如何知道从后台数据库服务器拉取?我在我的应用程序中使用了导航,我如何启动一个片段,当它完成时我会得到一个结果?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《CLR via C#》笔记:第5部分 线程处理(2)

调用FileStream 的 Read方法,你的线程托管代码转变为本机/用户模式代码, Read内部调用Win32 ReadFile 函数(①)。...然后,ReadFile 将你的线程本机/用户模式代码转变成本机/内核模式代码,向内核传递IRP数据结构,从而调用Windows内核(③)。...现在调用ReadAsync而不是 Read文件中读取数据。ReadAsync内部分配一个Task对象来代表用于完成读取操作的代码。然后,ReadAsync调用Win32 ReadFile函数(①)。...所以,返回void 的异步函数抛出未处理的异常,编译器生成的代码将捕捉,并使用调用者的同步上下文(稍后讨论)重新抛出。如果调用者通过GUI线程执行,GUI线程最终将重新抛出异常。...(P658 3) 异步函数的其他功能 对异步函数使用逐过程调试,如果调试器在await操作符上停止,逐过程会在异步操作完成后,在抵达下一个语句重新由调试器接管。

1.1K40

dotnet 调试应用启动闪退的方法

本机异常包括 Window Runtime 抛出的异常,基础的 Win32 调用包含的非返回值的错误的异常,以及外部 C++ 等库的异常等 为了提升调试的成功率,还请在 VisualStudio 设置里面...如果勾选了仅我的代码调试,那将只调试 Debug 生成的程序,而默认忽略对 Release 的程序的记录。在大部分的调试下,这个模式都可以减少发布的程序的干扰,可以更加方便调试业务代码。...但是当前是在调试启动失败,启动失败可能是库的锅,需要调试发布的程序,推荐关闭仅我的代码调试。...: 错误程序包相对应用程序 ID: 这两条日志没有能给咱很好的一个调试思路,只能说明应用确实挂了而已。...procdump 根据官方文档可以了解到使用方法是在命令行使用如下参数,即可做到在应用因为异常挂掉自动捕获 DUMP 文件 procdump.exe -e -t -w -ma 参数的含义如下 -e : 进程遇到未经处理的异常写入转储

1.8K10
  • C#图解教程第一章 C#和.NET框架

    (有时被称为:"语言无关的")    平台调用(platfrom invake,P/Invoke)     允许调用并使用非.NET的,但通过Win32 DLL导出的纯C函数的代码(比如Windows...    XML类:创建,读取以及操作XML文档  1.3 编译成CIL   程序代码:非本机代码,,,CIL(Common Intermediate Language,公共中间语言)   程序包含...:    CIL    使用的类型的元数据    对其他程序引用的元数据    CIL术语:     IL/MSIL  1.4 编译成本机代码并执行   程序的CIL调用时才会被编译   CLR执行步骤...:    检查程序的安全特性    在内存中分配空间    可执行代码发送给实时编译器,把其中一部分编译成本机代码   不被调用的代码不会被编译成本机代码,被调用的代码只被编译一次   CIL-->本机代码...不在CLR控制之下运行的代码,比如:Win32 C/C++ DLL   本机映像生成器或Ngen:    可以把一个程序转换成当前处理器的本机代码(免除了运行时的JIT编译过程)   编程的执行综述:

    1.2K110

    .NET混合开发解决方案1 WebView2简介

    它可以让本地应用程序(WinForm、WPF、WinUI、Win32)、移动应用程序(MAUI)轻松嵌入Web技术。...WebView2 控件使用 Microsoft Edge 作为呈现引擎在客户端应用程序及App中显示 Web 内容。...使用 WebView2 可以将 Web 代码嵌入到客户端应用程序及App中的不同部分,或在单个 WebView 实例中构建所有本机应用程序。...本机功能。 访问完整的本机 API 。 代码共享。 向代码库添加 web 代码可以增加跨多个平台的重用。 Microsoft 支持。... WebView2 发布一般可用版 (GA) ,Microsoft 会提供支持并添加新功能请求。 常青分布。 依赖带有定期平台更新和安全修补的最新版 Chromium。 已修复版本分布。

    2K31

    CoreHook:基于.NET Core运行时实现的Windows HOOK库

    支持的平台 CoreHook支持在运行Windows的各种体系结构上进行应用程序函数调用拦截。还计划了Linux和macOS支持。...(Win32) 插件示例 1.可以在此存储库中找到更多插件示例 用法 windows 如果要构建CoreHook项目(例如,使用dotnet build)而不发布,则必须按如下所述设置项目配置。...主机模块将首先尝试使用本地配置文件,然后它将检查全局配置文件(如果存在),最后它将使用CoreHook.CoreLoad.dll程序的目录来解析依赖项。...将x86和x64应用程序的环境变量设置为运行时配置文件的目录。这允许您为应用程序32-bit和64-bit应用程序提供不同的配置文件。...Windows需要检索DLL的PDB,它可以从中下载它们[https://msdl.microsoft.com/downloads/symbols](https://msdl.microsoft.com

    1.7K20

    去公司的第一天老大问我:内存泄露检测工具你知道几个?

    下面的部分展示了图并描述了如何使用Java飞行记录器调试内存泄漏。 检测内存泄漏 使用Java飞行记录尽早检测内存泄漏并防止内存不足错误。 检测缓慢的内存泄漏可能很困难。...观察应用程序的实时是否随着时间的推移而增加。live set是旧集合(所有非活动对象都已被垃圾回收)之后使用的Java堆量。...启动录制启用堆统计信息,这将在录制开始和结束触发旧集合。这可能会导致应用程序稍有延迟。但是,堆统计信息生成准确的活动信息。...注意:应用程序调用的api也可能无意中保存了对象引用。 此错误的另一个潜在来源是过度使用终结器的应用程序。如果类具有finalize方法,则该类型的对象在垃圾收集不会回收其空间。...操作:抛出此错误消息,VM调用致命错误处理机制(即,生成一个致命错误日志文件,其中包含有关崩溃线程、进程和系统的有用信息)。在本机堆耗尽的情况下,日志中的堆内存和内存映射信息可能很有用。

    34520

    程序员级别鉴定书(.NET面试问答集锦)

    由于 JIT 编译器会在调用程序集中定义的单个方法将该程序的 MSIL 转换为本机代码,因而必定会对运行时的性能造成影响。在大多数情况下,这种性能影响是可以接受的。...无法在多个进程之间进行共享。为了能在多个应用程序调用或共享一组程序的多个进程之间共享生成的代码,公共语言运行库支持一种提前编译模式。...SOA的思想是将业务逻辑封装成服务或者中间件提供给应用程序调用,当然其组件化思想是继承和发扬了OOP的优点。 XmlSerializer工作原理是什么?进程使用它需要什么ACL权限?...例如,此方法可被任何继承的类重写。 sealed:对一个类应用 sealed 修饰符,此修饰符会阻止其他类该类继承。...较大的差异在于 SAX 模型是一个“推送”模型,其中分析器将事件推到应用程序,在每次读取新节点通知应用程序,而使用 XmlReader 的应用程序可以随意读取器提取节点。

    1.8K70

    五、CLR加载程序代码,JIT编译器对性能的产生的影响

    1、CLR首次加载代码造成的性能损失      四、CLR执行程序集中代码介绍了CLR在首次执行一个类的,会初始化一个内部结构,然后目标方法被首次调用时,JITComplier函数(JIT编译器)...会验证IL代码并将IL代码编译成本地CPU指令并存储到动态内存中,这意味着一旦应用程序终止,编译好的代码也会被丢弃,所以,再次运行应用程序,或者同时启动应用程序的两个实例(使用两个不同的操作系统的进程...相比之下,本机(native)应用程序的只读代码页可由应用程序正在运行的所有实例共享. 2、CLR首次加载代码造成的性能损失的严重程度 对于大多数应用程序,JIT编译造成的损失并不严重,大多数应用程序都在反复的调用相同的方法...首次加载程序代码,JIT将IL编译成本地代码,会对其进行代码优化,这类似与非托管C++编译器的后端所做的事情.这可能也会花费加多的时间生成优化代码. ?.../debug:full开关告诉JIT编译器你打算调试程序,那么JIT编译器会记录每条IL指令所生成的本机代码.这样依赖,就可利用Visual Studio的“即时”调试功能,将调试器连接到正在运行的进程

    93170

    ebpf_ebpf需要修改内核吗

    一个eBPF程序会附加到指定的内核代码路径中,执行该代码路径,会执行对应的eBPF程序。...指令架构包含一系列的opcode即操作码(机器语言),以及由特定处理器执行的基本命令。来自维基百科) 钩子 eBPF 程序是事件驱动的,内核或应用程序通过某个挂钩点时运行。...(钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程序以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。消息到达后,在目标窗口处理函数之前处理。...所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。...甚至可以通过使用Userland静态定义的Tracepoint来使用eBPF调试用户空间程序。 eBPF的强大功能来自两个优点:快速且安全。要完全理解,您需要了解它是如何工作的。

    72511

    .NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法

    WebView2控件通过将对象传递到Web网页,使应用程序能够弥合web和本机应用程序(客户端程序:WinForm、WPF、WinUI、Win32)之间的鸿沟。...在开发WebView2应用程序时,需要一个本机对象,的方法或属性很有用。开发者希望web端代码触发这些本机对象方法,或者作为应用程序web端用户交互的结果。...比如在网页中调用客户端电脑的摄像头,如果在Web端开发,则编写大量的代码。如果在本机实现,则非常简单。能够调用本机对象的方法比在应用程序的web端重新编码对象的方法更快、效率更高。...如以下应用场景: 有一个键盘API,你想调用keyboardObject。web端显示键盘功能。 JavaScript是沙盒,限制了它在本机端的能力。...下面通过一个Demo来讲解如何实现JS调用C#方法。 业务场景:JS调用C#方法,传递三个参数,分别是num1、num2、message。

    10.9K10

    由一道面试题来了解进程间的通信

    sigdelset:信号集中删除指定信号。 sigismember:查询指定信号是否在信号集中。 登记信号 登记信号处理机主要用于决定进程如何处理信号。...当用户在应用程序中执行剪切或复制操作应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何其它应用程序都可以剪贴板上拾取数据,给定格式中选择适合自己的格式。   ...应用程序可以使用DDE进行一次性数据传输,也可以出现新数据,通过发送更新值在应用程序间动态交换数据。   DDE和剪贴板一样既支持标准数据格式(如文本、位图等),又可以支持自己定义的数据格式。...(2) 温链:数据交换服务器通知客户,然后客户必须请求新的数据。   (3) 热链:数据交换服务器自动给客户发送数据。   DDE交换可以发生在单机或网络中不同计算机的应用程序之间。...10 远程过程调用   Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。

    2.2K70

    CAPTAIN HOOK - 如何(不)寻找 JAVA 应用程序中的漏洞

    使用 Frida,我的设置是在应用程序 VM 上安装 frida-server, Captain Hook 的 docker 连接并注入 Frida 脚本,如下所示: 使用本机 Java 代理,应将编译后的代理复制到应用程序...坏事是,你猜对了,它在我的 echo 程序上运行良好,但是,需要在真实目标上测试完全无法使用。...我记得在这个话题上卡住了很长一段时间,直到一位同事告诉我 Java IDE 的工作中获取灵感。实际上,其中一些能够打印这样的堆栈跟踪。所以我开始研究这些调试器是如何发挥这种魔力的。...所以我写了一个 Java 程序,就像一个调试器,通过 UNIX 套接字与我的主 CLI(用 Python 编写)进行通信,这个过程很简单: 在所需方法上设置断点; 断点命中调用一组 Java 调试接口方法来检索父调用和这些调用的参数...com.sun.jdi.Value Value 完成后,我的工具使审核员能够在通过可疑方法彻底检查调用堆栈,从而了解调用的来源以及对他通过应用程序提供的数据进行的操作。

    80810

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    如何在编译加载两个相同的程序 如何同时调用两个两个相同命名空间和类型的程序?...AOT编译 CLR的内嵌编译器是即时性的,这样的一个很明显的好处就是可以根据当时本机情况生成更有利于本机的优化代码,但同样的,每次在对代码编译都需要一个预热的操作,需要一个运行时环境来支持,这之间还是有消耗的...A程序集中的Func方法调用了B程序集中的JsonObj方法,JsonObj方法又调用了Newtonsoft.Json 10.0程序集中的对象,那么执行Func方法程序就会异常,报System.IO.FileNotFoundException...第一种:通过bindingRedirect节点重定向,即找到10.0的版本,给定向到6.0版本 如何在编译加载两个相同的程序?...简单介绍,该功能是用来辅助调试的,在调试可以让开发人员了解并追溯代码所产生的一些事件,并且能够进行回溯以查看应用程序中发生的情形,它是一个非常强大的调试追踪器,它可以捕捉由你代码产生的事件,如异常事件

    2.7K63

    .NET6 平台系列3 .NET CLR 详解

    CLR 简介   运行时(Runtime Environment,简称Runtime ),是指那些支持在特定的平台上,用于运行特定编程语言编写的软件的库和程序一般要处理软件和操作系统之间的接口细节...(6)调试引擎(Debugger):使开发者能调试和跟踪应用程序代码。 (7)类型检查器(Type Checker):检查并禁止非安全的类型转换以及未初始化的变量的使用。...实现将应用程序首次安装到计算机时,就把整个应用程序转换为本机代码。...执行应用程序时,首先类加载器将应用程序的汇编(MSIL代码和元数据)加载到内存中,然后使用其中的元数据加载任何应用程序所需要的组件支持的汇编并进行类型安全和版本检查。...当然,如果开发人员希望在应用程序首次安装到计算机中就全部从MSIL转变为本机代码,那么可以使用 PreJIT 编译器实现,PreJIT自动把MSIL转换本机代码。

    74820

    windows 桌面GUI自动化-1. pywinauto 环境准备

    Application # 启动记事本 app = Application(backend="uia").start("notepad.exe") 执行后能正确打开记事本即可 可访问性技术(backend) 在启动应用程序之前...,我们需确定使用哪种可访问性技术(backend)用于应用程序。...在windows上受支持的有两种: Win32 API (backend= “win32”) ,默认的backend, MFC、VB6、VCL、简单的 WinForms 控件和大多数旧的遗留应用程序 MS...UI Automation (backend=”uia”) , WinForms、WPF、商店应用程序、Qt5、浏览器 那么如何知道程序到底适用于那种backend?...inspect 元素定位工具 常用的一些元素定位工具: SPY++,用于WIN32 API。SPY++可以显示所有的控件,访问技术应该选择”win32”。

    1.1K30

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    计算机是如何运行程序的? 接下来我要说什么是.NET的跨平台,并解释为什么能够跨语言。不过要想知道什么是跨平台,首先你得知道一个程序如何本机上运行的。...AOT编译 CLR的内嵌编译器是即时性的,这样的一个很明显的好处就是可以根据当时本机情况生成更有利于本机的优化代码,但同样的,每次在对代码编译都需要一个预热的操作,需要一个运行时环境来支持...Func方法调用了B程序集中的JsonObj方法,JsonObj方法又调用了Newtonsoft.Json 10.0程序集中的对象,那么执行Func方法程序就会异常,报System.IO.FileNotFoundException...生成的32位程序不能调用64位程序,64位也不能调用32位)、首选32位(如果目标平台是Any CPU并且项目是应用程序类型,则生成的是32位程序) 允许不安全代码(unsafe开关,在c#中进行指针编程...简单介绍,该功能是用来辅助调试的,在调试可以让开发人员了解并追溯代码所产生的一些事件,并且能够进行回溯以查看应用程序中发生的情形,它是一个非常强大的调试追踪器,它可以捕捉由你代码产生的事件,如异常事件

    4.4K30

    C#在.NET编译执行过程

    程序要么是可执行的,要么是DLL 程序里的代码并不是本机代码,而是一种名称为CIL的中间语言 程序包含如下信息: 程序的CIL 程序中使用的类型的元数据 对其他程序引用的元数据 2.  ...程序的编译过程    程序的CIL直到它被调用运行时才会被编译成本机代码。...在运行时,CLR执行下面步骤: 检查程序的安全特性 在内存中分配空间 把程序集中的可执行代码发送给实时编译器(JIT),把其中的一部分编译成本机代码。...程序集中的可执行代码只在需要的时候由JIT编译器进行编译,然后它就被缓存起来以备在后来的程序中执行。这就意味着不被调用的代码不会被编译成本机代码,而且被调用的代码只被执行一次。...一旦CIL被编译成本机代码,CLR就在运行时管理,执行像内存释放、数组边界检查、检查参数类型、异常管理等任务。有两个重要的术语由此而生。

    69610

    linux进程间通信方式最常用_linux进程调度

    一个进程可以给若干个进程发送消息,反之,一个进程可以接收不同进程发来的消息.显然,进程中关于消息队列的操作是临界区.发送进程正往接收进程的消息队列中添加一条消息,接收进程不能同时该消息队列中到出消息...IPC_EXCL和 IPC_CREAT一同使用时,如果信号量已经存在,则调用失败。...下面这段程序显示了WIN32下一个进程如何启动一个线程。...至于WIN32的”进程”概念,其含义则是”应用程序”,也就是相当于UNIX下的exec了。   ...Linux也有自己的多线程函数pthread,既不同于Linux的进程,也不同于WIN32下的进程,关于pthread的介绍和如何在Linux环境下编写多线程程序我们将在另一篇文章《Linux下的多线程编程

    2.1K20
    领券