Published on

linux addr2line



3 min read

Linux Addr2line


When it comes to debugging and analyzing complex software, finding the source code line corresponding to a memory address can be a challenging task. This is where Linux addr2line tool comes in handy. Addr2line is a powerful command-line tool that helps in translating memory addresses to file names, line numbers, and function names. In this article, we will explore the features and usage of addr2line, along with some practical examples.

Usage and Syntax

Addr2line is usually used in conjunction with a debugger such as gdb (GNU Debugger). It takes as input an executable file and memory addresses and provides detailed information about those addresses. The basic syntax of addr2line is as follows:

addr2line [options] [-e executable] [addresses...]

Here, the -e option is used to specify the executable file. The addresses parameter represents the memory addresses that you want to analyze.

Practical Examples

Let's dive into some practical examples to understand how addr2line works.

Example 1: Resolving function names

Suppose we have a binary file named program and we want to find the function name corresponding to a memory address 0x401234. We can use the following command:

addr2line -e program 0x401234

This will give us the name of the function associated with the memory address.

Example 2: Locating source code lines

In addition to function names, addr2line can also help us find the source code line corresponding to a memory address. Let's say we have an address 0x400abc and we want to know the exact line number in the source code. We can use the following command:

addr2line -e program -f -C -i 0x400abc

Here, the -f option displays the file name, while the -C option demangles C++ function names. The -i option displays the exact line number.

Example 3: Analyzing backtraces

Addr2line is particularly useful when analyzing backtraces obtained from a crash or error. Backtraces provide a list of memory addresses, and addr2line can help us identify the corresponding functions and source code lines.

Let's assume we have a backtrace that looks like this:


We can use the following command to obtain the corresponding function names and source code lines:

addr2line -e program -f -C -i 0x401234 0x400abc 0x403def

This will provide us with a detailed analysis of each memory address.


Linux addr2line is an invaluable tool when it comes to debugging and analyzing software. With its ability to translate memory addresses into function names and source code lines, addr2line helps developers pinpoint the exact location of issues. By leveraging addr2line in conjunction with a debugger, developers can save time and effort in troubleshooting and fixing bugs.

Remember to always keep addr2line in your debugging arsenal, as it can greatly simplify the process of understanding and resolving issues in your software.