web-dev-qa-db-ja.com

中括弧内でもstraceで完全な引数を表示する

-sオプションはより長い引数を表示する必要があることは知っていますが、常に機能するとは限りません(おそらく、配列またはネストされた引数を意味する中括弧が原因ですか?)。

strace -s1000 my_commandを実行した後でも、この引数は切り捨てられます。

ioctl(3、SNDCTL_TMR_TEMPOまたはTCGETA、{B9600 -opost -isig -icanon -echo ...})= 0

どうすれば完全な引数を確認できますか?

19
Marki555

straceパラメータにはisそのようなオプションがあります--vコマンドラインスイッチ。さらに、この優れたユーティリティのオープンソースの性質により、stracesourcesdefs.hヘッダーにパッチを適用することで、省略形を完全に無効にすることができます。

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

ローカルのgentoo/usr/portage/distfiles /ソフトウェアソースストレージからstrace-4.9にパッチを適用しました。 sourceforgeから最新のstraceソースをダウンロードする必要はありません。

21

ウラジミール・クンスキコフが言ったことを詳細に説明するには、次のコマンドを実行します。

  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にインストールされているはずです。ここで、-sオプションに大きな値を使用してstraceを実行します。例:

strace -s 65536 command_to_run_goes_here

出典:

  1. ウラジミール・クンシコフの答え。
  2. https://github.com/strace/strace/issues/2
6
Utku

マニュアル および ソース によると、-vオプションは、大きな構造で役立ちます。

2
aitap

ここでは長さの問題ではありません。

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

必要に応じて、ここにフラグを追加できます。フラグは/usr/include/asm-generic/termbits.hで定義されています

0
Gábor