如何在程序启动的时候自动挂接Debugger

本文介绍了一种调试由其他程序启动的进程的方法,适用于COM进程外服务器和Windows Service等场景。通过注册表设置,可以使得特定程序启动时自动加载指定的调试器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

在某些情况下,你可能需要调试一个由其他程序所启动的进程的启动代码,而这个过程并不由你所控制。比较典型的例子有COM进程外服务器和Windows Service

 

通常你可以在代码中手动加上DebugBreak API调用来自动启动调试程序,大部分情况这都能工作。

 

不过,某些情况下DebugBreak会不起作用。有可能该断点异常被SEH所截获(COM服务器的情况下)或者在调试器启动的这段时间内有可能导致TimeOutWindows Service的情况下),因此需要一种另外的方法,如下:

 

1.     打开RegEdit

2.     找到HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution options

3.     在该键下面新建一个Key,名称为你的程序名,如myprogram.exe

4.     在新建的key下面新建一个String,名称为Debugger

5.     Debugger的值修改为vsjitdebugger.exeVisual StudioJIT Debugger),或者其它你喜欢的Debugger,比如WinDbg等等。注意如果有必要的话,请将该调试器的目录加入到Path

 

经过如此设置之后,以后当你每次启动myprogram.exe的时候,你所指定的调试器便会自动启动,开始调试。



Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1518323


### 如何在CLion中使用调试器进行C++程序调试 为了配置并使用CLion中的调试功能,需确保项目已正确设置以便支持调试模式。对于基于CMake的项目,在构建时应指定`CMAKE_BUILD_TYPE=Debug`来启用调试信息[^1]。 #### 配置项目的构建选项 当创建或导入新项目到CLion时,默认情况下可能不会自动应用此参数。因此建议手动编辑`CMakeLists.txt`文件或者通过命令行传递额外变量给CMake以激活调试模式: ```cmake set(CMAKE_BUILD_TYPE Debug) ``` 这一步骤确保编译过程中会包含必要的符号表和其他辅助数据用于后续的断点设置和单步执行等功能。 #### 启动调试会话 一旦确认项目处于调试版本状态之后,可以通过点击工具栏上的绿色虫子图标启动带有附加调试特性的运行环境;也可以右键选中目标函数/测试案例等节点,并选择“Debug '...'”。 此时IDE将会加载相应的可执行文件及其依赖库,并允许开发者暂停程序流、检查当前上下文以及评估表达式的值。 #### 设置断点 利用左侧边栏处的小圆圈标记可以快速为特定源码位置设定临时停止点。每当遇到这些预设条件时,应用程序便会起等待进一步指令——比如继续前进至下一个语句(`F8`)或是深入探究内部调用链路(`Shift+F7`)。 #### 查看变量与内存布局 借助于监视窗口(Watch),能够实时追踪感兴趣对象的变化趋势;而寄存器视图(Registers)则提供了更底层视角下的硬件资源映射关系展示。此外还有堆栈跟踪(Stack Trace)帮助理解函数间的相互作用机制。 #### 自定义调试配置 如果希望针对不同场景定制专属方案,则可通过菜单路径 `Run -> Edit Configurations...` 来调整各项属性,如工作目录、环境变量乃至远程连接细节等等。 以上即是在CLion环境下开展高效便捷的交互式开发流程所需掌握的核心要素概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值