2014-04-08 20 views
6

Sau khi một số thay đổi gần đây-ish đối với cabal, tôi hoàn toàn nhầm lẫn về cách cấu hình một tệp thực thi. Trong ~/.cabal/config, tôi đã bật hồ sơ:Lập hồ sơ thực thi với cabal

[email protected]$ grep prof ~/.cabal/config 
library-profiling: True 
executable-profiling: True 

Nhưng nếu tôi cố gắng chạy thực thi của tôi với hồ sơ, tôi nhận được ...

[email protected]$ cabal run realtra-benchmark +RTS -p 
cabal: the flag -p requires the program to be built with -prof 
cabal: 
cabal: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args> 
<snip> 

tôi nhận được câu trả lời tương tự nếu tôi cố gắng bỏ qua cabal: ./dist/dist-sandbox-c8599c64/build/realtra-benchmark/realtra-benchmark +RTS -p.

Tất nhiên, thêm các -prof cờ để GHC-Options: trong file cabal tôi sẽ không làm việc:

[email protected]$ cabal build --ghc-options=-Werror && cabal test && cabal install 
./realtra.cabal has been changed. Re-configuring with most recently used 
options. If this fails, please run configure manually. 
Resolving dependencies... 
Configuring creatur-realtra-1.0.8... 
Warning: 'ghc-options: -prof' is not necessary and will lead to problems when 
used on a library. Use the configure flag --enable-library-profiling and/or 
--enable-executable-profiling. 

tôi con tôi không cần phải thêm những lá cờ vì họ đang ở trong tập tin cấu hình của tôi, nhưng chỉ trong trường hợp, tôi thử:

[email protected]$ cabal configure --enable-executable-profiling --enable-library-profiling 
Resolving dependencies... 
Configuring creatur-realtra-1.0.8... 
[email protected]$ cabal build --ghc-options=-Werror && cabal test && cabal install 
<snip> 
[email protected]$ cabal run realtra-benchmark +RTS -p 
cabal: the flag -p requires the program to be built with -prof 
cabal: 
cabal: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args> 
<snip> 

Tôi đang thiếu gì?

+0

Bạn đã thử cách này: 'cabal run realtra-benchmark + RTS -p -RTS' – Sibi

+1

Cờ' -RTS' chỉ cần thiết khi bạn đang theo dõi cờ không chạy. Nhưng chỉ để chắc chắn, tôi đã thử nó ngay bây giờ với '-RTS' ở cuối, và có lỗi tương tự. – mhwombat

+2

Hãy thử 'cabal run realtra-benchmark - + RTS -p'. Tôi đoán là '+ RTS' được hiểu là đối số cho chính' thực thi cabal'. –

Trả lời

7

Vấn đề là bit +RTS -p được hiểu là đối số cho chính bản thân thực thi là cabal. Để chuyển tiếp các đối số này đến tệp thực thi realtra-benchmark, hãy sử dụng cabal run realtra-benchmark -- +RTS -p. Nói chung, bạn nên luôn đặt dấu gạch ngang kép trước đối số mà bạn muốn được chuyển tiếp khi bạn đang sử dụng cabal run (ít nhất là cho đến khi this issue được sửa).

Các vấn đề liên quan