Может ли кто-нибудь помочь мне понять это?
$ stack exec -- mvm4x4_amf +RTS -sstderr
mvm4x4_amf: Most RTS options are disabled. Link with -rtsopts to enable them.
$ stack exec --profile -- mvm4x4_amf +RTS -sstderr
Executable named mvm4x4_amf not found on path: [{snip}]
Я нашел предложение для второй команды, опробованной выше, здесь, в разделе раздел Отладка. (10-е из 13 совпадений для поискового запроса: "rts")
После перестроения моего проекта Stack с помощью: stack build --profile
я получаю:
$ stack exec --profile -- mvm4x4_amf +RTS -sstderr
mvm4x4_amf: Most RTS options are disabled. Link with -rtsopts to enable them.
Если я использую это вместо этого:
$ stack exec --profile mvm4x4_amf +RTS -sstderr
моя программа запускается, но я не получаю никакого вывода информации о профилировании.
Если я «доберусь» до каталога .stack-work/
и «выполню вручную» (как я видел в некоторых других сообщениях, связанных с этой проблемой):
$ .stack-work/dist/x86_64-osx/Cabal-2.4.0.1/build/mvm4x4_amf/mvm4x4_amf +RTS -sstderr
mvm4x4_amf: Most RTS options are disabled. Link with -rtsopts to enable them.
то оказывается, что мой исполняемый файл на самом деле не был создан для профилирования. Но попытка явно перестроить его для профилирования не дает никаких действий:
$ stack build --profile :mvm4x4_amf
$
О, это вообще помогает?:
$ stack exec mvm4x4_amf --rts-options --info
[("GHC RTS", "YES")
,("GHC version", "8.6.5")
,("RTS way", "rts_v")
,("Build platform", "x86_64-apple-darwin")
,("Build architecture", "x86_64")
,("Build OS", "darwin")
,("Build vendor", "apple")
,("Host platform", "x86_64-apple-darwin")
,("Host architecture", "x86_64")
,("Host OS", "darwin")
,("Host vendor", "apple")
,("Target platform", "x86_64-apple-darwin")
,("Target architecture", "x86_64")
,("Target OS", "darwin")
,("Target vendor", "apple")
,("Word size", "64")
,("Compiler unregisterised", "NO")
,("Tables next to code", "YES")
]
Хм, при изменении опции файла кабалы и перестроении я заметил кое-что странное:
$ stack build --profile :mvm4x4_amf
luminous-0.5.0.0: unregistering (local file changes: luminous.cabal)
luminous> configure (lib + exe)
Configuring luminous-0.5.0.0...
luminous> build (lib + exe)
Preprocessing library for luminous-0.5.0.0..
Building library for luminous-0.5.0.0..
Preprocessing executable 'mvm4x4_amf' for luminous-0.5.0.0..
Building executable 'mvm4x4_amf' for luminous-0.5.0.0..
luminous> copy/register
Installing library in .../.stack-work/install/x86_64-osx/2428dc603454d346facf6484280fa92531e4d7789d3
3c4dd56c39cf70d79bd7e/8.6.5/lib/x86_64-osx-ghc-8.6.5/luminous-0.5.0.0-9ABiH0AyDmV25JxAv1cFEI
{snip}
Installing executable mvm4x4_amf in .../.stack-work/install/x86_64-osx/2428dc603454d346facf6484280fa
92531e4d7789d33c4dd56c39cf70d79bd7e/8.6.5/bin
{snip}
Registering library for luminous-0.5.0.0..
$ stack exec which mvm4x4_amf
.../.stack-work/install/x86_64-osx/9af8b70f7f84a02189b610f95c8d289ab7d743df5c23a5d5d43b30afe0c02b7c/
8.6.5/bin/mvm4x4_amf
Похоже, что стек находит исполняемый файл mvm4x4_amf
не в том каталоге, в котором он его устанавливает! Я правильно это читаю? Должен ли я беспокоиться?
О, для справки:
$ stack --version
Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2