跳转至

toolchain#

Arm GNU Toolchain

How to compile/generate AArch32 code and run on an AArch64 machine?

Linaro empowers rapid product deployment within the dynamic Arm ecosystem.

Arm GNU Toolchain is a community supported pre-built GNU compiler toolchain for Arm based CPUs.

GDB debug assembly

This article involves the following topics:

  1. How to disassemble source code to machine code?
  2. How to dump machine instruction along with source line?
  3. How to layout src and asm side by side in a single gdb window?

GDB Stop & Continue

5 Stopping and Continuing

在调试程序时,中断程序的运行是必须的。GDB 可以方便地暂停/继续程序的运行。

通过设置断点,可以决定程序在哪行,在什么条件下,或者在收到什么信号时暂停,以便查验程序运行的流程和状态。

程序暂停后,我们可以通过相关命令控制程序继续运行到下一个预设的中断点,在这种“暂停-继续”往复中调试验证程序设计的正确性。

GDB Invocation & Quitting

Invocation (Debugging with GDB)

This article discusses how to start GDB, and how to get out of it.

  • type gdb to start GDB.
  • Use file to change and load debugging FILE.
  • Use info/list to show info/src about the program.
  • Use the run command to start your program under GDB.
  • Use the start command to start debugging and to stop at main.
  • type quit, exit or ctrl+d to exit GDB console.

compiling for debugging with GDB

Compilation (Debugging with GDB)

In order to debug a program effectively, you need to generate debugging information when you compile it. This debugging information is stored in the object file; it describes the data type of each variable or function and the correspondence between source line numbers and addresses in the executable code.

To request debugging information, specify the -g option when you run the compiler.

GDB manual & help

This initial piece introduces how to use the gdb help system.

  1. GDB onlinedocs, concept index.
  2. Help within GDB, search command class and detailed command name.
  3. Take the breakpoints search as an example to exemplify help usage.

Mainstream Compiler - gcc/clang/msvc

Try and tease out mainstream compilers(GNU/GCC, Clang/LLVM, Microsoft Visual Studio) architecture/framework, toolchain, binutils and language(C/C++) standards.

The following concepts/topics will be involved:

  1. gcc/g++, glibc/libstdc++, gdb
  2. clang/clang++, llvm-gcc/llvm-g++, libc/libc++, lldb
  3. msvc/cl, windbg