1

Java アプレットを strace しようとしていますが、strace が機能していないようです。次の関数を呼び出しています。

public static void testSTrace(){
    long c = 0;
    for (int i = 0; i < 1000; i++){
        long start = System.nanoTime();

        try{Thread.sleep(0, 100);}catch(Exception e){/*cry*/}

        long stop = System.nanoTime();

        log.info("start : " +start+" stop : "+stop);
    }
}

上記のメッセージが呼び出される直前に strace から次の出力が得られ、strace からは何も得られません。

clone(child_stack=0xb7c9f4c4,
flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|
CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID|CLONE_DETACHED,
parent_tidptr=0xb7c9fbf8, {entry_number:6, base_addr:0xb7c9fbb0,
limit:1048575, seg_32bit:1,
contents:0, read_exec_only:0,
limit_in_pages:1, seg_not_present:0, useable:1}, child_tidptr=0xb7c9fbf8) = 8351 futex(0xb7c9fbf8, FUTEX_WAIT, 8351, NULL

メソッドからログ出力を取得し始めると、strace からは何も得られません。私はstraceにかなり慣れていません。何が起こっているのかについての手がかりはありますか?アプレットはトレースできますか?

4

2 に答える 2

1

おそらく、単一のスレッドをトレースしているだけです。-fフラグを指定して strace を実行します。

于 2009-07-27T13:12:14.017 に答える
0

man ページの 3 つの乾杯、フォロー フォーク フラグ、-f および -F が欲しい

-f -- follow forks, -ff -- with output into separate files
-F -- attempt to follow vforks, -h -- print help message

strace -fF /bin/appletviewer test.html 

今私は得る:

[pid  8401] gettimeofday({1248700317, 550296}, NULL) = 0
[pid  8401] gettimeofday({1248700317, 550401}, NULL) = 0
[pid  8401] gettimeofday({1248700317, 550500}, NULL) = 0
[pid  8401] gettimeofday({1248700317, 550626}, NULL) = 0
[pid  8401] gettimeofday({1248700317, 550883}, NULL) = 0
[pid  8401] gettimeofday({1248700317, 550993}, NULL) = 0
[pid  8401] gettimeofday({1248700317, 551093}, NULL) = 0
于 2009-07-27T13:11:26.247 に答える