Saya tahu tentang strace dan ltrace, tapi itu hanya memberi tahu saya apa panggilan sistem dan pustaka panggilan proses yang dieksekusi, masing-masing. Saya ingin tahu persis apa yang sedang dieksekusi oleh suatu proses. Entah perakitan, atau semacam jalan tengah antara C dan perakitan jika itu mungkin. Dengan asumsi biner belum dikompilasi dengan simbol debug, jadi condong ke opsi pertama lebih mungkin.
Use case: proses tampaknya digantung, tidak ada output dari strace atau ltrace. Tentukan apakah proses melakukan "sesuatu". Saya menyadari ini mungkin sulit untuk ditentukan, karena saya membayangkan ini analog dengan memecahkan masalah yang terputus-putus. Namun, dimungkinkan untuk mengumpulkan data yang bermanfaat.
Kasus penggunaan kedua: rasa ingin tahu. Akan menarik untuk membuang seluruh daftar instruksi perakitan ke daftar teks.
Dugaan saya adalah bahwa saya dapat menggunakan gdb untuk melakukan ini, tetapi tidak yakin bagaimana, karena ini kurang tentang debugging program yang saya tulis dan lebih lanjut tentang menggunakan gdb untuk memeriksa kesehatan proses yang sedang berjalan.
OS adalah CentOS 6.
gdb
atauddd
. Bahkan dalam perakitan, dan tanpa simbol debug.