Show complete arguments in strace even in curly brackets

萝らか妹 提交于 2019-12-03 11:19:11

问题


I know the -s option should display longer arguments, but it doesn't work always (probably because of those curly brackets meaning array or nested arguments?).

Even after running strace -s1000 my_command this argument is still truncated:

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

How can I see the complete arguments?


回答1:


There is such option in the strace parameters - you should use -v command line switch. Furthermore, due to the opensource nature of this great utility, you can disable abbreviation totally by patching the defs.h header in the strace sources:

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

I've patched that way strace-4.9 from my local gentoo /usr/portage/distfiles/ software sources storage. It doesn't require to download latest strace sources from sourceforge.




回答2:


To verbosely describe what Vladimir Kunschikov said - run the following commands:

  1. git clone git://git.code.sf.net/p/strace/code strace-code
  2. cd strace-code
  3. Modify the part of defs.h file as described by Vladimir Kunschikov.
  4. ./bootstrap
  5. ./configure
  6. make
  7. make install

The modified version of strace should have been installed in /usr/local/bin/strace. Now, run the strace using a large value for the -s option. Example:

strace -s 65536 command_to_run_goes_here

Sources:

  1. Vladimir Kunschikov's answer.
  2. https://github.com/strace/strace/issues/2



回答3:


According to the manual and the source, the -v option should help you with large structures.




回答4:


Here it is not length problem.

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

You can add here more flags if you want. The flags are defined in /usr/include/asm-generic/termbits.h



来源:https://stackoverflow.com/questions/34365928/show-complete-arguments-in-strace-even-in-curly-brackets

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!