Gdb

Unix歷史:返回程式碼八進制?

  • February 22, 2020

今天讓我措手不及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 ---.

引用自:https://unix.stackexchange.com/questions/24368