Java DTRUS是否丢失呼叫? 问题
我试图诊断在Mac上使用JCEF启动应用程序时出现的问题,dtruss似乎从跟踪中丢失了系统调用。例如,程序总是在查找“icudtl.dat”失败后退出,并打印如下日志消息:Java DTRUS是否丢失呼叫? 问题,java,macos,dtruss,Java,Macos,Dtruss,我试图诊断在Mac上使用JCEF启动应用程序时出现的问题,dtruss似乎从跟踪中丢失了系统调用。例如,程序总是在查找“icudtl.dat”失败后退出,并打印如下日志消息: [0309/151839:ERROR:icu_util.cc(144)] icudtl.dat not found in bundle sudo dtruss -f ./program.sh 2> /tmp/trace.txt 然而,我只是偶尔在dtruss跟踪中看到相应的写调用。我从来没有在寻找“icudtl.
[0309/151839:ERROR:icu_util.cc(144)] icudtl.dat not found in bundle
sudo dtruss -f ./program.sh 2> /tmp/trace.txt
然而,我只是偶尔在dtruss跟踪中看到相应的写调用。我从来没有在寻找“icudtl.dat”时捕捉到它。DTRUS是否可能错过呼叫?如果是这样的话,我该如何解决
细节
像这样运行DTRU:
[0309/151839:ERROR:icu_util.cc(144)] icudtl.dat not found in bundle
sudo dtruss -f ./program.sh 2> /tmp/trace.txt
在跟踪中,我看到以下内容:
[0309/151839:ERROR:icu_util.cc(144)] icudtl.dat not found in bundle
[0309/151839:FATAL:content_main_runner.cc(721)] Check failed: base::i18n::InitializeICU().
dtrace: 1346 dynamic variable drops with non-empty dirty list
1403/0xd0ba6: psynch_cvwait(0x7FBB82435768, 0x14990100149A00, 0x149900) = 0 0
然后,很长一段时间后,写操作实际上被捕获:
1403/0xd0b93: write_nocancel(0x2, "[0309/151839:ERROR:icu_util.cc(144)] icudtl.dat not found in bundle\n\0", 0x44) = 68 0
1403/0xd0b93: open_nocancel("\0", 0x209, 0x1B6) = -1 Err#2
1403/0xd0b93: write_nocancel(0x2, "[0309/151839:FATAL:content_main_runner.cc(721)] Check failed: base::i18n::InitializeICU(). \n\0", 0x5C) = 9
但根本没有提到它试图查找'icudtl.dat'。不过,还捕获了许多其他文件IO操作。您可以选择打印所有详细信息-a和/或跟踪回溯-s。@l'l'l即使在使用“-asf”运行时,似乎仍然缺少调用。我也尝试过增加缓冲区大小,但这似乎也没有什么不同。也许可以尝试使用pid来代替,或者opensnoop,即sudo opensnoop-ve使用pid没有任何区别。使用opensnoop或iosnoop,它成功地捕获了更多的IO操作,但仍然在我感兴趣的关键点上丢失了一些操作。我尝试将缓冲区大小逐渐设置为1GB,但似乎没有减少任何操作,这似乎很奇怪。