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

问题描述 投票:17回答:4

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

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

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

我怎么能看到完整的论点?

linux strace
4个回答
20
投票

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

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

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


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

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

1
投票

根据the manualthe source的说法,-v选项可以帮助你建造大型建筑。


0
投票

这不是长度问题。

./term.c:                       tprintf(" %sopost %sisig %sicanon %secho ...}",

如果需要,您可以在此添加更多标记。标志在/usr/include/asm-generic/termbits.h中定义

© www.soinside.com 2019 - 2024. All rights reserved.