即使在大括号中也显示strace中的完整参数

时间:2015-12-19 00:26:53

标签: linux strace

我知道-s选项应该显示更长的参数,但它总是不起作用(可能是因为那些大括号意味着数组或嵌套参数?)。

即使在运行strace -s1000 my_command之后,此参数仍然被截断:

  

ioctl(3,SNDCTL_TMR_TEMPO或TCGETA,{B9600 -opost -isig -icanon -echo ...})= 0

我怎样才能看到完整的论点?

4 个答案:

答案 0 :(得分:20)

strace参数中有 这样的选项 - 您应该使用 -v 命令行开关。 此外,由于此实用程序的开源性质,您可以通过修补defs.h sources中的strace标题来完全禁用缩写:

< #define abbrev(tcp)   ((tcp)->qual_flg & QUAL_ABBREV)
---
> #define abbrev(tcp)   0

我已经从我当地的gentoo / usr / portage / distfiles /软件源存储中修补strace-4.9。它并不需要从sourceforge下载最新的strace源。

答案 1 :(得分:5)

详细描述Vladimir Kunschikov所说的内容 - 运行以下命令:

  1. git clone git://git.code.sf.net/p/strace/code strace-code
  2. cd strace-code
  3. 按照Vladimir Kunschikov的描述修改defs.h文件的一部分。
  4. ./bootstrap
  5. ./configure
  6. make
  7. make install
  8. strace的修改版本应该已安装在/usr/local/bin/strace中。现在,使用strace选项的较大值运行-s。例如:

    strace -s 65536 command_to_run_goes_here
    

    来源:

    1. Vladimir Kunschikov的回答。
    2. https://github.com/strace/strace/issues/2

答案 2 :(得分:1)

根据the manualthe source-v选项可以帮助您处理大型结构。

答案 3 :(得分:0)

这不是长度问题。

hold.toggleBlock();
hold1.toggleBlock();

如果需要,您可以在此处添加更多标志。这些标志在/usr/include/asm-generic/termbits.h

中定义