Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
 
 

15-410 Simics Graphical Debugger


Introduction

While you may find the Simics command line to be less intuitive than gdb, Simics provides the ability to inspect and control many hardware features that you will need in order to successfully complete the class projects. Also, Simics contains several powerful graphical debugging tools.

Note: The Simics GUI can cause performance issues if your network latency (aka ping time) to LINUX.ANDREW is much more than 20 milliseconds. If it is much over that, you may wish to employ the 15-410 Virtual Andrew Accelerator.

Getting Started

When we launch Simics using the simics46 command, we see two windows pop up, a Simics console window (the console for the OS that is being run), and a Simics control window, which serves as a gateway to other facilities. The control window offers a "Debug" dropdown menu which contains a few debugging tools:

Simics control window

Note that the features described below are useful only after the system hits a breakpoint.

Disassembly Window

This provides useful information about an instruction, its address, and the function it belongs to. If the code hits a MAGIC_BREAK, we can use "System Step" to step through each assembly instruction. The GUI makes it easy to always know which function we are currently in.

One of the best features of this debugging mode is the "run forward until" feature, which basically runs the program until the specified instruction is hit. This feature can be invoked by right-clicking an instruction.

Simics disassembly window

Source Window

This is similar to the disassembly view, with the exception that it views source code instead of assembly-language instructions. The source view contains similar functions as the disassembly view.

Simics source window

Memory Window

This provides a scrollable view of the entire memory, which is extremely useful when debugging virtual memory, configuring IDT entries, and dealing with heap corruption.

Simics memory window

[Last modified Friday February 26, 2021]