how to use gdb in ros2 - githeim/windheim_archive GitHub Wiki
How to use gdb in ROS2
Prerequisite
sudo apt-get install gdb-multiarch
x86λΏλ§μ΄ μλλΌ μ격μΌλ‘ aarch64(XAVIER)λ₯Ό λλ²κΉ νλ €λ©΄ λ©ν° μν€ν μ² μ§μμ© gdbλ₯Ό μ€μΉνμ.
Applying the compiler option
CMakeLists.txtμ μ»΄νμΌ μ΅μ μ -g μ΅μ λ° μ΅μ ν λ 벨 0λ₯Ό μ μ©νλ -O0 μ΅μ μ μ μ©νλ€
add_compile_options(-g -O0)
modification in launch file
λ²κΉ νλ €λ λ°μΉ νμΌμ μμ νλ€, μλμ²λΌ prefix νλͺ©μ gdbserverκ΄λ ¨ μ΅μ μ μΆκ°νμ.
return LaunchDescription([
Node(
package='mypkg',
executable='mypkg_node',
prefix=['gdbserver 127.0.0.1:8844 '],
parameters=[
{"config_path": os.path.join(get_package_share_directory("mypkg"), "cfg/default.cfg")},
]
)
])
μ prefix νλͺ©μ μ§μ μ μΌλ‘
prefix=['gdb -ex=r --args'],
λ₯Ό μ¬μ©νμ§ μλκ° μμν μ μλλ°, μ΄ κ²½μ° ν€λ³΄λ μ λ ₯μ΄ μ μ©λμ§ μμ μΈ μκ° μλ€.
λ°λΌμ κ°μ μ μΌλ‘ gdb serverλ₯Ό λμμ λλ²κΉ μ μ΄μ©νλ€.
ν΄κ²° λ°©λ² : μλμ κ°μ΄ νλ©΄, μ¬μ© ν μ μλ€. λμ€νλ μ΄κ° λκ³ κΌ μ격 μ μμ΄ νμ μλ€λ©΄, μλμ κ°μ΄ μ€νμν¨λ€.
prefix=['gnome-terminal -e gdb -ex run --args ' ]
or
prefix=['xterm -e gdb -ex run --args ' ]
μ€μ
gnome-terminal -e μ΅μ
μ μ¬λΌμ§ μ΄κ²μ '--' λ‘ μ€νλμ΄μΌ ν¨
prefix=['gnome-terminal -- gdb -ex run --args ' ]
execution
$ ros2 launch mypkg mypkg.launch.py
...
...
[....] Listening on port 8844
μ€ννλ©΄ μ λ΄μ©μ²λΌ gdb μ μμ κΈ°λ€λ¦°λ€.
GDB connection
gdb λ₯Ό μ€ννκ³ λ€μκ³Ό κ°μ΄ IP/portλ₯Ό μ λ ₯νλ€, μ΄λ μ격μΌλ‘ μ μλ κ°λ₯ν¨μ μ μ μλ€.
(gdb)target remote 127.0.0.1:8844
μν¬μ€ν μ΄μ -x86μμ μ격μΌλ‘ xavier보λ-aarch64λ₯Ό λλ²κΉ νλ €λ©΄ μμ μ€μΉν gdb-multiarchλ₯Ό μ€νμμΌμΌ νλ€
$ gdb-multiarch
(gdb) target remote 127.0.0.1:8844
(gdb) c
λ₯Ό μ λ ₯νλ©΄, hold λμ΄ μλ νλ‘κ·Έλ¨μ΄ μ€νλλ€.