雑なメモ書き

気楽にいきます

macとlinux両方でlldbを動作させたい

  • active-toolcahinを直うちしてしまうと
  • 環境を変更したときに動作しなくなる問題への対処
#!/bin/sh

TARGET_PATH=$1
DEBUG_SRC=`strings $TARGET_PATH  | grep -o '^/rustc/[^/]\+/' | uniq`
ACTIVE_TOOL_CHAIN=`rustup show active-toolchain | grep -o '^[^ ]\+'`
TMPLLDBINIT=`mktemp -d`
echo "settings set target.source-map $DEBUG_SRC $HOME/.rustup/toolchains/$ACTIVE_TOOL_CHAIN/lib/rustlib/src/rust/" >> $TMPLLDBINIT/.lldbinit
rust-lldb -s $TMPLLDBINIT/.lldbinit $TARGET_PATH

修正版

  • slackでlo48576さんに指摘を頂いて
  • RUST_SYSROOTの取得方法を変更
  • 同時にrustcでの取得がうまく行かないケースがあるのでそれにも対応
#!/bin/sh

TARGET_PATH=$1
DEBUG_SRC=`strings $TARGET_PATH  | grep -o '/rustc/[^/]\+/' | uniq`
RUST_SYSROOT=`rustc --print sysroot`
TMPLLDBINIT=`mktemp -d`
echo "settings set target.source-map $DEBUG_SRC $RUST_SYSROOT/lib/rustlib/src/rust/" >> $TMPLLDBINIT/.lldbinit
rust-lldb -s $TMPLLDBINIT/.lldbinit $TARGET_PATH