strace output: desabilitar a abreviação altera completamente a saída

1

Uma chamada normal de strace me deu esta saída:

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

Eu quero ver os outros sinalizadores de terminal e tentei -v e -e abbrev=none :

Print unabbreviated versions of environment, stat, termios, etc. calls.

Mas as duas opções não mostram (apenas) mais, mas sim:

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
    
por Hauke Laging 03.04.2018 / 03:44

1 resposta

2

Analisando o código , esses são os únicos comportamentos disponíveis. Somente para saída abreviada, a taxa de transmissão e os estados desses quatro sinalizadores são impressos explicitamente. Caso contrário, os valores hexadecimais são impressos para fornecer detalhes sangrentos. Você terá que procurar as bandeiras termios em outro lugar .

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);
    
por 03.04.2018 / 05:53

Tags