繁体   English   中英

进程开始时进行调试

[英]Debug as soon as a process start

我目前正在尝试通过Windows中的gcc调试Cygwin编译的C ++代码,并希望在程序启动后立即附加。 为此,我启动了gflags并配置为即使执行程序也启动gdb

不幸的是,我也想要一个可视化的调试器,并打算使用CDT(Eclipse C / C ++插件)来调试我的程序。

有没有一种非侵入性的方式(不修改我的程序)来启动Eclipse并在程序启动后对其进行调试。

尝试1 :( 确定是否可以将gdbserver用作来宾,以Eclipse作为主机。如果可行,我可以配置gflags启动gdbserver)

  1. 下载了gdb源代码并构建了gdbserver
  2. 在Eclipse中创建本地连接
    1. 更改为“远程系统资源管理器”透视图[Windows-> Open Perspective->其他->远程系统浏览]
    2. 创建本地连接
    3. 打开“新建连接向导”对话框[远程系统资源管理器->连接]
    4. 选择本地作为远程系统类型
    5. 提供了连接名称Bash(默认接受其他选项)
  3. 创建了C / C ++远程应用程序调试配置
    1. [运行->调试配置-> C / C ++远程应用程序]
    2. 选择可执行文件(在我的情况下为bash.exe)
    3. 添加了项目名称(bash)
    4. 选择连接为本地
    5. 通过Gdbserver设置[调试器-> GdbServer设置]确定端口号。 在我的情况下是2345。
  4. 打开命令提示符并启动gdbserver`gdbserver:2345 bash.exe'
  5. 切换回Eclipse,并在“调试配置”对话框上单击“调试”

输出:

在控制台中出现错误信息

'cmd' is not recognized as an internal or external command,
operable program or batch file.

尝试2 (正在进行中,创建Eclipse插件)

当开始一个过程中手动有处于暂停状态来启动它的一个选项-所得过程将具有一切就绪,但主螺纹的不是一个单一的指令将被执行(参见CREATE_SUSPENDED标志的CreateProcess

我将编写两个小程序:一个以挂起状态启动特定进程;另一个是编写一个程序。 另一个选择一个特定的进程,并为主线程调用ResumeThread

调试方案将是:

  • 创建挂起的目标进程
  • 附加调试器
  • 恢复过程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM