How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use...

37
How to Find and Fix System Software Issues Fast Intel® System Studio's Intel® JTAG Debugger Robert Müller-Albrecht Technical Consulting Engineer Developer Products Division Intel Corp.

Transcript of How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use...

Page 1: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

How to Find and Fix System Software Issues Fast Intel® System Studio's Intel® JTAG Debugger

Robert Müller-Albrecht

Technical Consulting Engineer

Developer Products Division

Intel Corp.

Page 2: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Reliability and Stability through Intel® System Studio

Debuggers

System Application

Analyzers

Power & Performance

Memory & Thread errors

Compiler and Libraries

C/C++ Compiler

Signal, Media, Data & Math Processing

System & Application Code running Linux* JTAG

Interface

Embedded or Mobile System

Integrated software tool suite that provides deep system-wide insights

to help:

Accelerate Time To Market

Strengthen System Reliability

Boost Power Efficiency and Performance

Page 3: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Agenda

Intel® JTAG Debugger

Usage Overview

Firmware

Operating System

OS awareness

Memory configuration, leaks and stack overflows

Interrupts & segmentation faults

Device Drivers

Dynamically loaded kernel modules

Processor and device registers

Summary

3

6/5/2013

Understanding all layers of the system software stack

Page 4: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Intel® JTAG Debugger

6/5/2013

• Intel® Atom™ processor target support • EFI/UEFI Firmware Debug (Windows* host) • NAND/NOR Flashing • OS awareness (Kernel Thread Views, Kernel Module Debug) • ELF Dwarf / PDB symbol info support • Hardware/Platform register access • Memory Layout and Page Table views • Hardware trace capability support

System Software Debug for Intel® Atom™ processor based Intelligent Systems

Page 5: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Supported JTAG Devices

Your choice: low cost and the reliability of Intel’s own platform and power-on validation device

Intel® ITP-XDP3:

• Email Hibbert Group* at [email protected] and request the VTG order form. (May require NDA)

Macraigor Systems* usb2Demon*:

• Go to http://www.macraigor.com/usbDemon.htm • Select the Intel® Atom™ Processor target with the appropriate

24, 31 or 60 pin connector.

Page 6: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Getting Started

When the debugger GUI comes up it will automatically establish contact with the target.

Once contact is established the target is halted and memory read around the current instruction pointer.

Assembly Window

Debugger menu command buttons

Assembly instructions around where you halted

Command window with sign-on message

6

Page 7: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Loading the symbols

Browse to find the identical binary file as loaded on the target

Download = download to target. Do not tick this if You will debug SW already on the target

7

Page 8: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Finding sources

The debugger will try to find the source file which matches the current instruction pointer. If it cannot find the file it will ask you to do a manual search.

8

Source file location automatically resolved from symbol info Easy directory and file addition to search path

Page 9: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Evaluating symbols

Hover the curser over a variable and the debugger will show you its value

Highlight a variable and use the ‘right mouse click’ – additional options are now available

9

Page 10: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Local variables

Local variable window will display all variables which are accessible from within current scope

The example above shows part of the ‘rq’ structure

In expression field indicate that this is a compound element and that it has been Expanded ( > for not expanded)

10

Expandable local variable tree view resolves arrays, lists, structs and classes with ease

Page 11: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

How did I reach the current location?

Function tree – bottom up Only address presented when no debug information available

Source file: line number Current file

11

Detailed callstack to understand and analyze the program flow

Page 12: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Setting breakpoints

Minimum - code location is required. Hard option allow you to set a breakpoint even if the memory location is not accessible

For Watchpoints the location, access type and length are important

12

Complex conditional hardware and software breakpoints for code and data

Page 13: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Stopping at SVEN Event Triggers

Smart Event Triggers

• Live JTAG system debug with event tracing

• Smart breakpoints that interrupt execution on trace event calls

• Set smart breakpoints for in-depth analysis

For example:

– Break on any event from the USB driver

– Break on any Debug String that starts with “ERROR”

– Break if register X is accessed

– Break if register X bits [7-9] have value 0b101

Achieve Stability by combining event tracing and JTAG debug methods

Page 14: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Scripting for automated testing

You can record a debug session and later ‘replay’ it.

Useful for generating ‘over-night-tests’

There are two options to generate a script file: - ‘Start Command Recording’ will store all commands you make in the file [specified in the dialog which opens] until you select Stop Command Recording - ‘Start IO Recording’ will also, in addition, collect any outputs from the debugger

To run any script file click on the icon and provide the data needed (min name of the script file) in the dialog which opens

14

If you need to repeat the same debug steps over and over – Don’t reinvent the wheel

Page 15: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Agenda

Intel® JTAG Debugger

Usage Overview

Firmware

Operating System

OS awareness

Memory configuration, leaks and stack overflows

Interrupts & segmentation faults

Device Drivers

Dynamically loaded kernel modules

Processor and device registers

Summary

15

6/5/2013

Page 16: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Debug Firmware and Bootloaders

16

• Tree view of firmware modules • Automatic load of source files • Step and set breakpoints as in any high level language debugger • Requires Windows* host

JTAG assisted firmware and bootloader debug made easy

Page 17: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

EFI BIOS debugging

17

EFI environment uses relocatable code modules. To debug any of those modules you need to provide the address of the code to the debugger. There are a set of console commands to identify an efi-module and load corresponding symbols.

xdb> efi "loadthis" INFO: Software debugger set to: efi64 - EFI/PI compliant BIOS (64-bit mode) INFO: Using DRAM search semantics, align=0x00001000 range=0x00100000 INFO: Searching backwards from 0x00000000809FB6C3 to 0x00000000808FB6C3 for PE/COFF header INFO: Found PE/COFF module at 0x00000000809FB000 - 0x00000000809FF1C0 (size: 16832 bytes) INFO: Loading debug symbols found at: e:\dev.efi\work\Build\MdeModule\NOOPT_VS2008x86\X64\MdeModulePkg\Application\xdbefiutil\ xdbefiutil\DEBUG\xdbefiutil.efi

xdb> efi showsystab INFO: Software debugger set to: efi64 - EFI/PI compliant BIOS (64-bit mode) INFO: Reading EFI_DEBUG_IMAGE_INFO table, this could take a little while... EFI System table at 0x00000000AF536F18 Configuration Tables: ________________________________________________________________________ GUID: Pointer: Name: GUID 05ad34ba, 6f02, 4214, {...} 0xae72bdb0 DXE_SERVICES_TABLE

xdb> efi showmodules INFO: Software debugger set to: efi64 - EFI/PI compliant BIOS (64-bit mode) INFO: Using cached EFI State Information ________________________________________________________________________ ModuleID Base Size Name 00000 0x00000000AE71C000 0x00013F51 DxeMain.efi … xdb> efi "load Shell.efi"

Page 18: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Load module symbol info by address

18

6/5/2013

Page 19: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Use loaded module listing

19

6/5/2013

Page 20: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Flashing Target Images & Bootloader Flash Memory Tool • Broad flash type support - NOR and NAND

• Flash binary and hex files

• Mechanism to recover corrupted flash - Intel® Atom™ Processor CE5300

• Backup flash contents into binary file on host

• Erase/unlock/lock blocks

• Ideal for fast BIOS update

20

Flash Memory • Burn • Erase/Unlock • Backup

Easy to use flashing

tool • Multiple flash types

• NOR & NAND

Updating firmware, BIOS, file system, OS on your boot NOR or mass-storage flash device made easy

Page 21: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Agenda

Intel® JTAG Debugger

Usage Overview

Firmware

Operating System

OS awareness

Memory configuration, leaks and stack overflows

Interrupts & segmentation faults

Device Drivers

Dynamically loaded kernel modules

Processor and device registers

Summary

21

6/5/2013

Page 22: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Linux* OS Debug

22

6/5/2013

Page 23: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Debugging the Linux* kernel You can debug any code on source level provided that you have the symbol information. In addition it is aware of Linux* kernel threads and their state 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please 3. Run to &mwait_idle to debug fully initialized OS

23

The Intel® JTAG Debugger knows what is going on in the OS

Page 24: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Hardware Thread Awareness

The debugger can display how the multiple logical cores are used and indicate which logical core is used by the current code displayed. You can select a logical core and continue debugging the SW running there.

24

If your Linux* OS is SMP enabled you can step through all available hardware threads

Page 25: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Identify memory leaks and stack overflows

Select an address and press Translate to find the address mapping. When you press OK the page directory/table involved will be shown in the Paging window

25

Move between physical and virtual memory with ease Find cause for segmentation faults.

Page 26: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Memory Descriptor Tables

For each entry in the descriptor tables you can view the important bits - excluding the address information (base + limit)

26

Modify and test memory layout and configuration

Page 27: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Page Table

Double click on a page table/directory entry and You will have the ability to modify the attribute bits with the bit field editor

27

Modify Page Table Entries and your OS memory configuration interactively

Page 28: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

28

Who triggered my OS signal handler?

IDT: Understand mapping of hw interrupt to OS handler

Page 29: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

LBR - Instruction Trace

Unwind history leading to fault condition

Page 30: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Agenda

Intel® JTAG Debugger

Usage Overview

Firmware

Operating System

OS awareness

Memory configuration, leaks and stack overflows

Interrupts & segmentation faults

Device Drivers

Dynamically loaded kernel modules

Processor and device registers

Summary

30

6/5/2013

Page 31: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Debugging loadable modules

There is a Linux kernel module [idbntf] provided with the debugger which you can build and install – you then can load & debug Linux kernel modules [for example: loadable drivers]

Before driver loaded:

After driver loaded – insmod sum3.ko:

31

Page 32: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Display features - registers

Next slide

32

Page 33: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Example: System Controller Registers entry. With many of the registers having individual bits with unique

interpretations the programmer can use a bit field editor to inspect and change those values

33

Page 34: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

Summary

For more information: http://intel.ly/system-studio

Intel® JTAG Debugger is a powerful tool which allows you to:

The Intel® JTAG Debugger provides a debug solution for all layers of the system software stack through • EFI/UEFI firmware and bootloader debug • In depth memory configuration awareness • In depth processor and chipset register views • Linux* OS awareness and kernel module debug

debug solution based on Intel’s own ITP-XDP3 device used widely in hardware and platform validation

Page 35: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Questions?

Page 36: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please

Copyright© 2013, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

INFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. Copyright © , Intel Corporation. All rights reserved. Intel, the Intel logo, Atom, Core, Xeon, Cilk and VTune are trademarks of Intel Corporation in the U.S. and other countries.

Optimization Notice

Intel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804

Legal Disclaimer & Optimization Notice

Copyright© 2012, Intel Corporation. All rights reserved. *Other brands and names are the property of their respective owners.

36

Page 37: How to Find and Fix System Software Issues Fast · 1. Run to kernel entry point &start_kernel (use HW breakpoint) 2. Step through kernel initialization and single step as you please