まぁ、Haskell みたいにトレース不可能な感じではないんですが... 環境は二つ。明日、明後日で、読んでいきます。
環境は二つで
サーバの Singulariy 上の debug build した rustc
macOS上の rustc
下の方は LLVM なので gdb/lldb で。
Singulariy上の build いつもの python3 に引っかかって...
update-alternatives --install /usr/bin/python python /usr/bin/python3 10`
とかやらないと python が python3 にならないらしい。
Singulariyの作り方も 「--sandbox` と `--writable` を使って段階的にビルドするのがいいらしい」ことらしく...
最後にビルドした結果をsifに変換するとできるらしい。微妙。
singularity build --fakeroot debugging-rust-compiler.sif rust-debug
これに
singularity shell /ie-ryukyu/singularity/rust-debug/debugging-rust-compiler.sif
として入って、中で trace します。sif は 5GB。VM並の大きさじゃん... 中に入ってみると 16GB。ふーん。
で、いけるかと思ったが.... break point がかからない。
l rustc_parse::expr::parse_expr
くらいでいけるべきなのだが。結局、
Singularity> nm /rust/rust/build/x86_64-unknown-linux-gnu/stage1/bin/../lib/librustc_driver-ce53599820ba664c.so | grep parse_expr
で mangling されたものに main で停めた後に
b _ZN11rustc_parse6parser4expr45_$LT$impl$u20$rustc_parse..parser..Parser$GT$27parse_expr_catch_underscore17h43010b29c3bbcd9bE
とすると捕まって、その後は
l parse_expr
できるように。しかし、この方法は macOS ではだめでした。
source code debugger は C++ でもかなりだめでな〜 誰も debugger とか使ってないのかも知れん。
朝、10時からやるはずです。参加したい人は Facebook の DM くれれば Zoom の Link を送ります。
No comments:
Post a Comment