windbg与多进程调试

我们首先做个实验,来看windbg是否支持多进程调试, 我首先编写一个MFC工程命名为mutiprocess,在这个工程中简单添加一个按钮,作用是启动一个线程。代码如下:

 // TODO: Add your control notification handler code here
 STARTUPINFO           StartupInfo;

 PROCESS_INFORMATION pi; //Define as global variable, the pi must be transmited to DbgMainLoop(DWORD)

 memset ( &StartupInfo , NULL , sizeof ( STARTUPINFO ) ) ;
 memset ( &pi , NULL , sizeof ( PROCESS_INFORMATION ) ) ;

 StartupInfo.cb = sizeof ( STARTUPINFO ) ;

 //create the Debuggee process
 CreateProcess(
   0,
   "D:\\C++\\debugviewTest\\Debug\\debugviewTest.exe",
   (LPSECURITY_ATTRIBUTES) 0L,
   (LPSECURITY_ATTRIBUTES) 0L,
   TRUE,
    NORMAL_PRIORITY_CLASS,
   (LPVOID) 0L,
   (LPTSTR) 0L,
   &StartupInfo, &pi ) ;

然后进行编译,通过后启动windbg,选择“Open Executable”,选择编译成功的mutiprocess.exe,当进入到初始化断点后直接键入‘g’。接下来mutiprocess.exe启动。当点

对画框中的button后将启动进程“debugviewTest.exe”,debugviewTest.exe是个被调试进程其中的功能包括breakpoint,trace,Create thread, remote break point。然后尝试点击break point, trace, create thread等按钮,发现在windbg没有任何显示。

接下来在mutiprocess的按钮上添加一行代码“DebugBreak();”,手动添加一个断点,然后重复以上测试,但debugviewTest.exe启动后,mutiprocess被中断到调试器,此时尝试点击break point,trace,create thread等按钮,仍然发现在windbg中没有任何显示。

于是可以得出windbg不支持多进程的调试。但从windbg的调试结构上看,windbg完全可以支持多进程的调试,但为什么没有实现这个功能呢?我一直思考但没有得出结论,但我觉得多进程调试还是有其方便之处,下篇中我将介绍如何能够实现多进程调试以及其优点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 要使用Windbg调试dump文件,首先需要打开Windbg并将其附加到崩溃的程序进程。然后,可以使用.dump命令生成dump文件。.dump命令有不同的选项,可以生成不同类型的dump文件。例如,使用/m选项可以生成标准的minidump文件,该文件包含系统信息、加载的模块信息、进程信息和线程信息。使用/ma选项可以生成带有尽量多选项的minidump文件,包括完整的内存内容、句柄、未加载的模块等。使用/mFhutwd选项可以生成带有数据段、非共享的读/写内存页和其他有用信息的minidump文件。还可以使用/f选项生成全信息dump文件。\[1\] 在分析dump文件之前,需要设置Windbg的环境。可以设置符号路径(PDB路径)和源码路径。然后,可以使用File->Open Executable命令打开可执行文件,并配置可执行文件的运行参数。接下来,可以使用Windbg的命令启动调试。\[2\] 另外,要注意安装Windbg并设置符号路径。可以通过腾讯电脑管家下载Windbg,并设置符号路径为c:\symcachehttp://msdl.microsoft.com/download/symbols;c:\symcache。还需要加载SOS调试扩展,以便查看在公共语言运行时中运行的代码的相关信息。加载SOS的命令是.load,例如.load C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/sos.dll。需要确保加载的sos.dll版本与运行的程序版本对应。\[3\] #### 引用[.reference_title] - *1* *2* [Windbg分析dump及调试程序](https://blog.csdn.net/listener51/article/details/79719871)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Windbg分析Dump文件](https://blog.csdn.net/zjpdd1023/article/details/105008250)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值