Strace

strace 輸出:禁用縮寫完全改變輸出

  • April 3, 2018

一個正常的strace電話給了我這個輸出:

ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0

我想查看其他終端標誌並嘗試-v-e abbrev=none

列印 environment、stat、termios 等呼叫的未縮寫版本。

但是這兩個選項都沒有(只是)顯示更多,而是:

ioctl(0, TCGETS, {c_iflags=0x5500, c_oflags=0x5, c_cflags=0xbf, c_lflags=0x8a3b, c_line=0, c_cc="\x03\x1c\x7f\x15\x04\x00\x01\x00\x11\x13\x1a\x00\x12\x0f\x17\x16\x00\x00\x00"}) = 0

查看程式碼,這些是唯一可用的行為。僅對於縮寫輸出,明確列印這四個標誌的波特率和狀態。否則,將列印十六進制值以為您提供血腥細節。您必須在其他地方尋找 termios 標誌。

if (abbrev(tcp)) {
   tprints("{");
   printxval(baud_options, tios.c_cflag & CBAUD, "B???");
   tprintf(" %sopost %sisig %sicanon %secho ...}",
       (tios.c_oflag & OPOST) ? "" : "-",
       (tios.c_lflag & ISIG) ? "" : "-",
       (tios.c_lflag & ICANON) ? "" : "-",
       (tios.c_lflag & ECHO) ? "" : "-");
   return;
}
tprintf("{c_iflags=%#lx, c_oflags=%#lx, ",
   (long) tios.c_iflag, (long) tios.c_oflag);
tprintf("c_cflags=%#lx, c_lflags=%#lx, ",
   (long) tios.c_cflag, (long) tios.c_lflag);
tprintf("c_line=%u, ", tios.c_line);

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