Intel® System Debugger User Guide

ID 648476
Date 06/13/2024
Confidential
Document Table of Contents

Launch Intel(R) Debug Extensions for WinDbg*

  1. WinDbg* must have access to kernel symbols for the connection to succeed; therefore, you must set the symbol file path beforehand.

    Launch WinDbg* without using the batch script and set the symbol file path by selecting File > Symbol File Path and adding srv*C:\Symbols*http://msdl.microsoft.com/download/symbols to the path or by setting the _​NT_​symbol_​path global environment variable with a corresponding value. Save the workspace by selecting File > Save Workspace and close WinDbg*.

    You need to do this only once before the first use.

  2. Connect the host system to the target one with the Intel(R) In-Target Probe (Intel(R) ITP) or the Intel(R) Direct Connect Interface (Intel(R) DCI).

  3. Power on the probe and the target system.

  4. To launch Intel(R) Debug Extensions for WinDbg* with OpenIPC choose any of the following options:

    • Click the desktop icon or open the Start Menu and search for Intel(R) Debug Extensions for WinDbg* <year> NDA <version>.

    • Run windbg_​iajtag_​console.bat located at <install_​dir>\system_​debugger\<version> as follows:

      • windbg_​iajtag_​console.bat to launch the default Python*.

      • windbg_​iajtag_​console.bat -r to launch IPython*.

    • Launch isd_​shell.bat located in the root installation directory and run windbg_​dci to invoke WinDbg*.

    • Launch WinDbg* from the Intel(R) System Debugger Eclipse* IDE:

      1. Launch the Intel(R) System Debugger.

      2. Connect to the target using the Target Connection Assistant.

      3. From the main menu, select Tools > Intel(R) System Debugger NDA > Launch WinDbg* Over Intel(R) Direct Connect Interface (Intel(R) DCI).

      You can change launch parameters such as WinDbg* path and startup arguments. In Eclipse*, go to Window > Preferences > WinDbg/* over Intel(R) DCI.

  5. At this point, two Python* objects are available for debugging:

    • itp - Intel(R) ITP interface

    • itpkd - wrapper over WinDbg* and kernel debug console

    Execute windbg() to halt the target and run a WinDbg* session. After that, WinDbg* starts connecting to the target.

    If Microsoft Hyper-V is active on the debug target, the windbg() command results in one of the following states:

    • If the target is halted, the WinDbg* UI is launched into the currently halted context. If Microsoft* Hyper-V is active, WinDbg* will likely start within its context.

    • If the target is not halted, the WinDbg* over Intel(R) DCI implementation breaks into NTOSKRNL (NT OS).

  6. (Optional) Specify the logical core to search for NT symbol. By default (for Windows* Software Development Kit (SDK) version 18500 or higher), WinDbg* uses Guess startup argument to search for NT symbol. This argument makes windbg to search in all available threads (logical cores).

    You can change the default behavior as follows:

    • To force WinDbg* to use NtBaseAddr startup argument, execute the following command before launching windbg():

      force_NTBaseAddr()
      

      It will search for NT symbol in core 0.

    • To select a particular logical core for the search, execute the following command:

      select_logical_core_NTBaseAddr(<logical_core>)
      

      It forces WinDbg* to use NtBaseAddr startup argument only search in the specified core. This is useful if you want to search in one particular core only. For example, when Microsoft* Hyper-V is running, and one of the cores is running NTOSKRNL.

      To unselect this startup argument and use the default parameters, execute the following command:

      select_logical_core_NTBaseAddr(-1)
      

Afterwards, you can halt the target any time by running the halt() command.