问题
我正在尝试诊断在 Mac 上使用 JCEF 启动应用程序的问题,并且它的跟踪似乎dtruss
缺少系统调用。例如,程序总是在查找 'icudtl.dat' 失败后退出,并打印出如下日志消息:
[0309/151839:ERROR:icu_util.cc(144)] icudtl.dat not found in bundle
然而,我只是偶尔在 dtruss 跟踪中看到相应的写入调用。而且我从未设法捕捉到它实际上正在寻找“icudtl.dat”。dtruss 是否有可能漏接电话?如果是这样,我该如何解决?
细节
像这样运行 dtruss:
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 操作。