我正在尝试运行单声道分析器,但是,我没有收到任何分析器输出或错误消息。
如果我mono --profile=log program.exe
运行,程序将按预期运行并且没有错误消息,但没有output.mlpd
文件。
我已安装分析器库并可见:-
# ldconfig -p | grep libmono-profiler
libmono-profiler-log.so.0 (libc6,hard-float) => /usr/lib/libmono-profiler-log.so.0
libmono-profiler-coverage.so.0 (libc6,hard-float) => /usr/lib/libmono-profiler-coverage.so.0
libmono-profiler-aot.so.0 (libc6,hard-float) => /usr/lib/libmono-profiler-aot.so.0
我尝试使用mono-sgen
和我能找到的几乎所有探查器选项示例,但没有任何变化。
将探查器更改为无效的内容,例如mono --profile=meh program.exe
具有相同的结果(程序运行,无错误消息,无探查器输出)
我已经在两台不同的机器上尝试过(Yocto Thud和Ubuntu 18.04.2)
Mono JIT compiler version 5.18.0.268 (tarball Fri Jun 28 03:01:54 UTC 2019)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: normal
Notifications: epoll
Architecture: armel,vfp+hard
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: supported, not enabled.
Suspend: preemptive
GC: sgen (concurrent by default)
Mono JIT compiler version 5.20.1.19 (tarball Thu Apr 11 09:02:17 UTC 2019)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
Interpreter: yes
LLVM: yes(600)
Suspend: hybrid
GC: sgen (concurrent by default)
这曾经适用于这些环境中的先前版本的单声道,但是,回滚和测试并非易事。
更新
我已经设法通过安装单配置文件包在某些平台(Ubuntu)上解决此问题。
此软件包提供以下文件:-
/.
/usr
/usr/bin
/usr/bin/emveepee
/usr/bin/mprof-decoder
/usr/bin/mprof-heap-viewer
/usr/lib
/usr/lib/mono-tools
/usr/lib/mono-tools/Mono.Profiler.Widgets.dll
/usr/lib/mono-tools/emveepee.exe
/usr/lib/mono-tools/mprof-decoder-library.dll
/usr/lib/mono-tools/mprof-decoder.exe
/usr/lib/mono-tools/mprof-heap-snapshot-explorer.dll
/usr/lib/mono-tools/mprof-heap-viewer.exe
/usr/share
/usr/share/doc
/usr/share/doc/mono-profiler
/usr/share/doc/mono-profiler/changelog.Debian.gz
/usr/share/doc/mono-profiler/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/mprof-decoder.1.gz
/usr/share/man/man1/mprof-heap-viewer.1.gz
这些似乎只是处理配置文件输出的工具。目前尚不清楚这些文件中的哪些"启用"/usr/bin/mono
实际捕获配置文件数据,或者为什么mono没有报告所需文件(?)不存在的错误。
/usr/lib/libmono-profiler-*.so 文件已经在这些平台上(在安装 mono-profiler 之前)
剩下的要解决的平台是ARM上的Yocto Thud。由于没有像 Ubuntu 那样可用的软件包,也没有错误消息,因此很难说出可能导致此问题的缺失内容。
Ubuntu 的解决方案是安装mono-profiler
包。
Yocto Thud 的问题是存在/usr/lib/libmono-profiler-log.so.0
,但是,单声道会寻找与/usr/lib/libmono-profiler-log.so.0
没有符号链接的/usr/lib/libmono-profiler-log.so
(使用 strace 确定)。
mono 没有将此报告为错误的事实似乎是一个错误。