問題所在
我試圖使用rust-gdb來除錯這個Rust程式,但我似乎不能讓GDB正常作業:
/home/a/tmp/foo(head)
09/19/2021 09:57:23。 114 AM> rust-gdb -q target/debug/foo
從target/debug/foo讀取符號...
(gdb) b hello
斷點1在0x7a44: 檔案 src/main.rs, 行2。
(gdb) 運行
啟動程式。/home/a/tmp/foo/target/debug/foo
警告。
不能插入斷點1。
無法訪問地址為0x7a44的記憶體。
(gdb)
我還試著用b src/main.rs:2設定斷點,以及只運行gdb而不是Rust包裝器rust-gdb,結果都是一樣。我的做法正確嗎?
系統資訊
/home/a/tmp/foo(head)
09/19/2021 09:07:48. 200 AM> uname -a
Linux a 5.13. 15_1 #1 SMP Fri Sep 10 16: 52:33 UTC 2021 x86_64 GNU/Linux
/home/a/tmp/foo(head)
09/19/2021 09:07:51。 291 AM> rustc --version
rustc 1.55.0 (c8dfcfe04 2021-09-06)
/home/a/tmp/foo(head)
09/19/2021 09:07:53。 955AM> gdb --version
GNU gdb (GDB) 10.2。
Copyright (C) 2021 Free Software Foundation, Inc.
許可協議GPLv3 。GNU GPL版本3或更高版本<http://gnu.org/licenses/gpl.html>/span>
這是自由軟體:你可以自由地改變和重新發布它。
在法律允許的范圍內,不存在任何擔保。
uj5u.com熱心網友回復:
我通過卸載已安裝的gdb(它是從Nixpkgs倉庫中獲得的),并用Void Linux musl倉庫中的gdb替換它,設法使其作業。我懷疑Nixpkgs的gdb是用glibc構建的,與編譯后的Rust程式不兼容,而Rust程式被編譯為使用musl。通常,我使用的Bedrock Linux用戶空間允許我一起使用用不同C庫構建的程式,但在這種情況下,我想我需要GDB使用與它試圖除錯的東西相同的C庫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/329645.html
標籤:
上一篇:如何防止C 中的模板型別擴展?
