debugger - win

dscript.txt

lm l
.reload /f /v TargetExe.exe
lm l
bp `TargetExe!abs:\path\to\the.cpp:3`
windbg -c "$<abs:\path\to\dscript.txt" -y "abs:\path\projectRoot" -srcpath "abs:\path\projectRoot" "abs:\path\project\build\TargetExe.exe"
cdb -c "$<abs:\path\to\dscript.txt" -y "abs:\path\projectRoot" -srcpath "abs:\path\projectRoot" "abs:\path\project\build\TargetExe.exe"

CLI option

-c " command "
Specifies the initial debugger command to run at start-up.
This command must be surrounded with quotation marks.
Multiple commands can be separated with semicolons.
(If you have a long command list, it may be easier to put them in a script and
then use the -c option with the $<, $><, $><, $$>< (Run Script File) command.)

-y SymbolPath
Specifies the symbol search path.
Separate multiple paths with a semicolon (;).
If the path contains spaces, it should be enclosed in quotation marks.
For details, and for other ways to change this path, see Symbol Path.

-srcpath SourcePath
Specifies the source file search path.
Separate multiple paths with a semicolon (;).
If the path contains spaces, it should be enclosed in quotation marks.
For details, and for other ways to change this path, see Source Path.

-s
Disables lazy symbol loading.
This will slow down process startup.
For details and for other methods of controlling this, see SYMOPT_DEFERRED_LOADS.

-n
Noisy symbol load: Enables verbose output from the symbol handler.
For details and for other methods of controlling this, see SYMOPT_DEBUG.

-pn Name
Specifies the name of the process to be debugged.
(This name must be unique.)
This is used to debug a process that is already running.

-p PID
Specifies the decimal process ID to be debugged.
This is used to debug a process that is already running.
For details, see Debugging a User-Mode Process Using CDB.

-o
Debugs all processes launched by the target application (child processes).
By default, processes created by the one you are debugging will run as they normally do.
For other methods of controlling this, see Debugging a User-Mode Process Using CDB.

-log{a|au|o|ou} LogFile
Begins logging information to a log file.
If the specified file already exists, it will be overwritten if -logo is used,
or output will be appended to the file if -loga is used.
The -logau and -logou options operate similar to -loga and -logo respectively,
except that the log file is a Unicode file.
For more details, see Keeping a Log File in CDB.

-z DumpFile
Specifies the name of a crash dump file to debug.
If the path and file name contain spaces, this must be surrounded by quotation marks.
It is possible to open several dump files at once by including multiple -z options,
each followed by a different DumpFile value. For details, see Analyzing a User-Mode Dump File.
dv (Display Local Variables)
k (Display Stack Backtrace)

command token

    Command Tokens
    ; (Command Separator)
    { } (Block Delimiter)
    ${ } (Alias Interpreter)
    $$ (Comment Specifier)
    * (Comment Line Specifier)
    .block
    .break
    .catch
    .continue
    .do
    .else
    .elsif
    .for
    .foreach
    .if
    .leave
    .printf
    .while

command

    ENTER (Repeat Last Command)
    $<, $><, $$<, $$><, $$ >a< (Run Script File)
    ? (Command Help)
    ? (Evaluate Expression)
    ?? (Evaluate C++ Expression)
    # (Search for Disassembly Pattern)
    || (System Status)
    ||s (Set Current System)
    | (Process Status)
    |s (Set Current Process)
    ~ (Thread Status)
    ~e (Thread-Specific Command)
    ~f (Freeze Thread)
    ~u (Unfreeze Thread)
    ~n (Suspend Thread)
    ~m (Resume Thread)
    ~s (Set Current Thread)
    ~s (Change Current Processor)
    a (Assemble)
    ad (Delete Alias)
    ah (Assertion Handling)
    al (List Aliases)
    as, aS (Set Alias)
    ba (Break on Access)
    bc (Breakpoint Clear)
    bd (Breakpoint Disable)
    be (Breakpoint Enable)
    bl (Breakpoint List)
    bp, bu, bm (Set Breakpoint)
    br (Breakpoint Renumber)
    bs (Update Breakpoint Command)
    bsc (Update Conditional Breakpoint)
    c (Compare Memory)
    d, da, db, dc, dd, dD, df, dp, dq, du, dw, dW, dyb, dyd (Display Memory)
    dda, ddp, ddu, dpa, dpp, dpu, dqa, dqp, dqu (Display Referenced Memory)
    dds, dps, dqs (Display Words and Symbols)
    dg (Display Selector)
    dl (Display Linked List)
    ds, dS (Display String)
    dt (Display Type)
    dtx (Display Type - Extended Debugger Object Model Information)
    dv (Display Local Variables)
    dx (Display Debugger Object Model Expression)
    e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza, ezu (Enter Values)
    f, fp (Fill Memory)
    g (Go)
    gc (Go from Conditional Breakpoint)
    gh (Go with Exception Handled)
    gn, gN (Go with Exception Not Handled)
    gu (Go Up)
    ib, iw, id (Input from Port)
    j (Execute If - Else)
    k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)
    l+, l- (Set Source Options)
    ld (Load Symbols)
    lm (List Loaded Modules)
    ln (List Nearest Symbols)
    ls, lsa (List Source Lines)
    lsc (List Current Source)
    lse (Launch Source Editor)
    lsf, lsf- (Load or Unload Source File)
    lsp (Set Number of Source Lines)
    m (Move Memory)
    n (Set Number Base)
    ob, ow, od (Output to Port)
    p (Step)
    pa (Step to Address)
    pc (Step to Next Call)
    pct (Step to Next Call or Return)
    ph (Step to Next Branching Instruction)
    pt (Step to Next Return)
    q, qq (Quit)
    qd (Quit and Detach)
    r (Registers)
    rdmsr (Read MSR)
    rm (Register Mask)
    s (Search Memory)
    so (Set Kernel Debugging Options)
    sq (Set Quiet Mode)
    ss (Set Symbol Suffix)
    sx, sxd, sxe, sxi, sxn, sxr, sx- (Set Exceptions)
    t (Trace)
    ta (Trace to Address)
    tb (Trace to Next Branch)
    tc (Trace to Next Call)
    tct (Trace to Next Call or Return)
    th (Trace to Next Branching Instruction)
    tt (Trace to Next Return)
    u (Unassemble)
    uf (Unassemble Function)
    up (Unassemble from Physical Memory)
    ur (Unassemble Real Mode BIOS)
    ux (Unassemble x86 BIOS)
    vercommand (Show Debugger Command Line)
    version (Show Debugger Version)
    vertarget (Show Target Computer Version)
    wrmsr (Write MSR)
    wt (Trace and Watch Data)
    x (Examine Symbols)
    z (Execute While)

meta command

.abandon (Abandon Process)
.allow_exec_cmds (Allow Execution Commands)
.allow_image_mapping (Allow Image Mapping)
.apply_dbp (Apply Data Breakpoint to Context)
.asm (Change Disassembly Options)
.attach (Attach to Process)
.beep (Speaker Beep)
.bpcmds (Display Breakpoint Commands)
.bpsync (Synchronize Threads at Breakpoint)
.breakin (Break to the Kernel Debugger)
.browse (Display Command in Browser)
.bugcheck (Display Bug Check Data)
.cache (Set Cache Size)
.call (Call Function)
.chain (List Debugger Extensions)
.childdbg (Debug Child Processes)
.clients (List Debugging Clients)
.closehandle (Close Handle)
.cls (Clear Screen)
.context (Set User-Mode Address Context)
.copysym (Copy Symbol Files)
.cordll (Control CLR Debugging)
.crash (Force System Crash)
.create (Create Process)
.createdir (Set Created Process Directory)
.cxr (Display Context Record)
.dbgdbg (Debug Current Debugger)
.detach (Detach from Process)
.dml_flow (Unassemble with Links)
.dml_start (Display DML Starting Point)
.dump (Create Dump File)
.dumpcab (Create Dump File CAB)
.dvalloc (Allocate Memory)
.dvfree (Free Memory)
.echo (Echo Comment)
.echocpunum (Show CPU Number)
.echotime (Show Current Time)
.echotimestamps (Show Time Stamps)
.ecxr (Display Exception Context Record)
.effmach (Effective Machine)
.enable_long_status (Enable Long Integer Display)
.enable_unicode (Enable Unicode Display)
.endpsrv (End Process Server)
.endsrv (End Debugging Server)
.enumtag (Enumerate Secondary Callback Data)
.event_code (Display Event Code)
.eventlog (Display Recent Events)
.exdicmd (EXDI Command)
.exepath (Set Executable Path)
.expr (Choose Expression Evaluator)
.exptr (Display Exception Pointers)
.exr (Display Exception Record)
.excr (Display Exception Context Record)
.extmatch (Display All Matching Extensions)
.extpath (Set Extension Path)
.f+, .f- (Shift Local Context)
.fiber (Set Fiber Context)
.fiximports (Fix Target Module Imports)
.flash_on_break (Flash on Break)
.fnent (Display Function Data)
.fnret (Display Function Return Value)
.force_radix_output (Use Radix for Integers)
.force_tb (Forcibly Allow Branch Tracing)
.formats (Show Number Formats)
.fpo (Control FPO Overrides)
.frame (Set Local Context)
.help (Meta-Command Help)
.hh (Open HTML Help File)
.hideinjectedcode (Hide Injected Code)
.holdmem (Hold and Compare Memory)
.idle_cmd (Set Idle Command)
.ignore_missing_pages (Suppress Missing Page Errors)
.inline (Toggle Inline Function Debugging)
.imgscan (Find Image Headers)
.jdinfo (Use JIT_DEBUG_INFO)
.kdfiles (Set Driver Replacement Map)
.kdtargetmac (Display Target MAC Address)
.kframes (Set Stack Length)
.kill (Kill Process)
.lastevent (Display Last Event)
.lines (Toggle Source Line Support)
.load, .loadby (Load Extension DLL)
.locale (Set Locale)
.logappend (Append Log File)
.logclose (Close Log File)
.logfile (Display Log File Status)
.logopen (Open Log File)
.netsyms (Disable Network Symbol Loading)
.netuse (Control Network Connections)
.noshell (Prohibit Shell Commands)
.noversion (Disable Version Checking)
.ocommand (Expect Commands from Target)
.nvload (NatVis Load)
.nvlist (NatVis List)
.nvunload (NatVis Unload)
.nvunloadall (NatVis Unload All)
.ofilter (Filter Target Output)
.open (Open Source File)
.opendump (Open Dump File)
.outmask (Control Output Mask)
.pagein (Page In Memory)
.pcmd (Set Prompt Command)
.pop (Restore Debugger State)
.prefer_dml (Prefer Debugger Markup Language)
.process (Set Process Context)
.prompt_allow (Control Prompt Display)
.push (Save Debugger State)
.quit_lock (Prevent Accidental Quit)
.readmem (Read Memory from File)
.reboot (Reboot Target Computer)
.record_branches (Enable Branch Recording)
.reload (Reload Module)
.remote (Create Remote.exe Server)
.remote_exit (Exit Debugging Client)
.restart (Restart Target Application)
.restart (Restart Kernel Connection)
.rrestart (Register for Restart)
.scroll_prefs (Control Source Scrolling Preferences)
.scriptdebug (Debug JavaScript)
.scriptlist (List Loaded Scripts)
.scriptload (Load Script)
.scriptproviders (List Script Providers)
.scriptrun (Run Script)
.scriptunload (Unload Script)
.secure (Activate Secure Mode)
.send_file (Send File)
.server (Create Debugging Server)
.servers (List Debugging Servers)
.setdll (Set Default Extension DLL)
.shell (Command Shell)
.settings (Set Debug Settings)
.show_read_failures
.show_sym_failures
.sleep (Pause Debugger)
.sound_notify (Use Notification Sound)
.srcfix, .lsrcfix (Use Source Server)
.srcnoisy (Noisy Source Loading)
.srcpath, .lsrcpath (Set Source Path)
.step_filter (Set Step Filter)
.suspend_ui (Suspend WinDbg Interface)
.symfix (Set Symbol Store Path)
.symopt (Set Symbol Options)
.sympath (Set Symbol Path)
.thread (Set Register Context)
.time (Display System Time)
.tlist (List Process IDs)
.trap (Display Trap Frame)
.tss (Display Task State Segment)
.ttime (Display Thread Times)
.typeopt (Set Type Options)
.unload (Unload Extension DLL)
.unloadall (Unload All Extension DLLs)
.urestart (Unregister for Restart)
.wake (Wake Debugger)
.write_cmd_hist (Write Command History)
.writemem (Write Memory to File)
.wtitle (Set Window Title)

Control Keys

    CTRL+\ (Debug Current Debugger)
    CTRL+ALT+\ (Debug Current Debugger)
    CTRL+A (Toggle Baud Rate)
    CTRL+B (Quit Local Debugger)
    CTRL+C (Break)
    CTRL+D (Toggle Debug Info)
    CTRL+F (Break to KD)
    CTRL+K (Change Post-Reboot Break State)
    CTRL+P (Debug Current Debugger)
    CTRL+R (Re-synchronize)
    CTRL+V (Toggle Verbose Mode)
    CTRL+W (Show Debugger Version)

https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-reference

posted @ 2023-04-11 17:33  fndefbwefsowpvqfx  阅读(30)  评论(0编辑  收藏  举报