Gdb
Unix歷史:返回程式碼八進制?
今天讓我措手不及
gdb
:Program exited with code 0146.
gdb
以八進制列印返回碼;調查我發現的原因: http: //comments.gmane.org/gmane.comp.gdb.devel/30363但這並不是一個特別令人滿意的答案。一些快速的Google搜尋並沒有揭示歷史,所以我希望 SO 上的某個人可能知道背後的故事。
一個有點相關的問題,如何以八進制查看返回碼?也許舊機器總是列印返回碼?
$ printf %o\\n $?
很尷尬:)
八進製表示簡化了對最常用的小值的退出程式碼的解釋。如果這個數字(一個字節)以十進制列印,查找哪個信號中斷了程序將需要一點計算,而以八進制列印,它們可以按原樣讀取:
- 程序以狀態 5 退出,
gdb
顯示05
沒有區別- 一個程序退出是因為它得到了一個
SIGINT
(Control
+C
),gdb
顯示0202
哪個比信號 #2 更容易辨識130
。此外,退出狀態也可能是一個位遮罩,在這種情況下,八進制(至少當你習慣它時,這在幾十年前比現在更常見)比十進制甚至更容易在心理上轉換為位十六進制,就像例如
chmod
仍然接受八進制數來表示文件權限:0750 = 111 101 000 = rwx r-x ---
.