zoukankan      html  css  js  c++  java
  • 控制调试目标的执行

      控制调试目标执行非常有用,这与在Visual Studio中设置断点一样。

      1、中断执行

      中断执行可以使用组合键CTRL+C,这个组合键将使调试器把一个线程注入到目标进程中,并且执行一条中断语句。另外还可以通过设置断点实现。

      2、恢复执行

      当调试器中断执行时,(由于触发了断点或者其他事件),调试器会给出一个命令提示符,此时可以通过在命令提示符中输入命令来与调试目标进行交互。当完成了中断位置的分析后,希望恢复调试目标的执行可以使用命令g(go)。如果命令不带任何参数,那么只是恢复调试目标的执行。直到下次发生某个调试事件。

      当通过Windbg启动一个程序时,调试器在启动程序后,会自动中断并进入到调试器。

      如果启动一个.Net控制台程序ConsoleApplication3.exe,其代码如下:

    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("程序启动!");
                string str = Console.ReadLine();
                Console.WriteLine("你刚才输入的是" + str);
                SayOver();
                Console.ReadKey();
            }
            public static void SayOver()
            {
                Console.WriteLine("程序结束!");
            }
        }
    }

      通过Windbg启动此控制台程序:

    Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    CommandLine: "C:UsersChenZhuoDocumentsVisual Studio 2010ProjectsConsoleApplication3ConsoleApplication3inReleaseConsoleApplication3.exe"
    Symbol search path is: SRV*D:PDB*http://msdl.microsoft.com/download/symbols/
    Executable search path is: 
    ModLoad: 002a0000 002a8000   ConsoleApplication3.exe
    ModLoad: 77100000 7723c000   ntdll.dll
    ModLoad: 70bb0000 70bfa000   C:WindowsSYSTEM32MSCOREE.DLL
    ModLoad: 759c0000 75a94000   C:Windowssystem32KERNEL32.dll
    ModLoad: 75510000 7555b000   C:Windowssystem32KERNELBASE.dll
    (fac.10a0): Break instruction exception - code 80000003 (first chance)
    eax=00000000 ebx=00000000 ecx=0026f3d0 edx=771470f4 esi=fffffffe edi=00000000
    eip=771a05a6 esp=0026f3ec ebp=0026f418 iopl=0         nv up ei pl zr na pe nc
    cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
    ntdll!LdrpDoDebuggerBreak+0x2c:
    771a05a6 cc              int     3

      触发初始断点是调试器的默认行为,这能给调试人员在最早时刻开始分析应用程序。此时调试目标会停止执行并等待输入。(对于我的程序,控制台上并无任何输出)。当输入命令g之后,控制台程序输出如下:

      

      3、单步调试代码

      通常,在调试器中分析代码时,我们可能需要单步调试代码,分别是命令p(step)和t(trace)。

      用Windbg启动上面的控制台程序,第一次是系统默认的中断,我们执行命令g。此时,程序要求输入文字。这个时候,我们按住Ctrl+Break中断程序执行。

  • 相关阅读:
    asp.net mvc 三层加EF两表联查
    asp.net mvc 三层加EF 登录注册 增删改查
    超市管理系统
    asp.net三层架构增删改查
    ACCP8.0 HTML标签
    Sql 优化解决方案
    抽象类与抽象方法
    Form 表单提交的几种方式
    C# 接口的使用(工厂模式)
    使用VBA设置打印页面高度和宽度
  • 原文地址:https://www.cnblogs.com/kissdodog/p/3752466.html
Copyright © 2011-2022 走看看