单声道分析器不 运行

Mono profiler not running

我正在尝试 运行 单声道分析器,但是,我没有收到任何分析器输出或错误消息。

如果我 运行 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 具有相同的结果(程序 运行s,没有错误消息,没有分析器输出)

我在两台不同的机器上试过(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)

这曾经在这些环境中的早期版本的单声道中工作,但是,回滚和测试并非易事。

更新

我已经通过安装 mono-profiler 包在某些平台 (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

这些似乎只是处理配置文件输出的工具。目前尚不清楚这些文件中的哪些 "enables" /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,但是,mono 寻找 /usr/lib/libmono-profiler-log.so(使用 strace 确定),它没有链接到 /usr/lib/libmono-profiler-log.so.0

mono 没有将此报告为错误这一事实似乎是一个错误。