In situations when source code is unavailable, you can step into and debug the disassembled code in the dedicated view.
Open disassembly view
When debugging your code, use the Force Step Into Alt+Shift+F7 command instead of Step Into F7. Step Into acts like Step Over for functions with no source code.
Disassembly view opens automatically when CLion can’t locate the source files during debugging. This can happen, for example, when you debug a custom executable using a fake CMake project or when there is a library built on CI without the source code being in the project.
To explicitly specify the source, click Select file in the notification:
Disassembly also opens automatically when you launch a debug session for the attached process that does not provide debug information.
Step through in disassembly
While in disassembly view, you can investigate your code using regular stepping actions. Note that breakpoint-related actions are not supported at the moment.
You can also use the Set Execution Point action to jump to an arbitrary line of code in disassembly:
Breakpoints in disassembly
You can set breakpoints in disassembly the same way you do in the source code. These breakpoints are called address breakpoints.
Right-click a breakpoint to view the available options:
Click More or press Ctrl+Shift+F8 to edit address breakpoints in the Breakpoints dialog:
Go to address
Use the Go to field to jump to a desired code line. In this field, you can enter an address or any expression that can be evaluated into an address.
If you need to include a register into the expression, start its name with
$ (the GDB notation).
Syntax highlighting in assembly files
Syntax highlighting is available for AT&T assembly code.
By default, the .s and .asm files are recognized as assembly code files, but you can configure other types:
Select Assembly Language in the list of recognized file types and add a new extension to the list.
The functionality of disassembly view is under development in CLion. You can vote for the desired features and share your feedback in the tickets gathered under CPP-1743: Assembly language support, for example: