debugging and troubleshooting
11
总安装量
0
周安装量
#28308
全站排名
安装命令
npx skills add https://github.com/shunsukehayashi/miyabi-claude-plugins --skill Debugging and Troubleshooting
Skill 文档
ð Debugging and Troubleshooting
Version: 2.0.0 Last Updated: 2025-11-22 Priority: ââââ (P1 Level) Purpose: ä½ç³»çãªã¨ã©ã¼è¨ºæã¨Rustãããã°ã¯ã¼ã¯ããã¼
ð æ¦è¦
ã³ã³ãã¤ã«ã¨ã©ã¼ããã¹ã失æãã©ã³ã¿ã¤ã ã¨ã©ã¼ã«å¯¾ãã ä½ç³»çãªè¨ºæã¨è§£æ±ºã¯ã¼ã¯ããã¼ãæä¾ãã¾ãã
ð¯ P0: å¼ã³åºãããªã¬ã¼
| ããªã¬ã¼ | ä¾ |
|---|---|
| åä½ä¸è¯ | “this code isn’t working” |
| ãã¹ã失æ | “why is this test failing?” |
| ã¨ã©ã¼è§£æ | “debug this error” |
| ã³ã³ãã¤ã«ã¨ã©ã¼ | “compilation error” |
| ã©ã³ã¿ã¤ã ã¨ã©ã¼ | “runtime panic” |
ð§ P1: ã¨ã©ã¼åé¡ã¨å¯¾å¦
ã¨ã©ã¼åé¡è¡¨
| åé¡ | çç¶ | 診æã³ãã³ã | åªå 度 |
|---|---|---|---|
| ã³ã³ãã¤ã«ã¨ã©ã¼ | error[E####] |
cargo check |
é« |
| ãã¹ã失æ | test ... FAILED |
cargo test -- --nocapture |
é« |
| ã©ã³ã¿ã¤ã panic | thread 'main' panicked |
RUST_BACKTRACE=1 |
é« |
| ãã¸ãã¯ã¨ã©ã¼ | æå¾ ã¨ç°ãªãåºå | dbg!(), ãã° |
ä¸ |
| ããã©ã¼ãã³ã¹ | é ãã»ã¡ã¢ãªå¤§ | cargo bench, valgrind |
ä¸ |
| çµ±åã¨ã©ã¼ | å¤é¨ãµã¼ãã¹å¤±æ | ãããã¯ã¼ã¯è¨ºæ | ä½ |
ð P2: ãããã°ãã¿ã¼ã³
Pattern 1: ã³ã³ãã¤ã«ã¨ã©ã¼
# Step 1: ã¨ã©ã¼ç¢ºèª
cargo check 2>&1 | head -50
# Step 2: ã¨ã©ã¼ã³ã¼ãè§£æ
# error[E0277] â Traitæªå®è£
# error[E0412] â åæªå®ç¾©
# error[E0433] â ã¢ã¸ã¥ã¼ã«æªè§£æ±º
# Step 3: 詳細æ
å ±
rustc --explain E0277
ããããã¨ã©ã¼ã¨è§£æ±º:
| ã¨ã©ã¼ã³ã¼ã | åå | 解決ç |
|---|---|---|
| E0277 | Traitæªå®è£ | #[derive(...)] ã¾ãã¯æåå®è£
|
| E0412 | åãè¦ã¤ãããªã | useæè¿½å |
| E0433 | ã¢ã¸ã¥ã¼ã«è§£æ±ºå¤±æ | ãã¹ç¢ºèªãmodå®£è¨ |
| E0502 | åç¨ç«¶å | åç¨ã¹ã³ã¼ãè¦ç´ã |
| E0382 | æææ¨©ç§»åå¾ä½¿ç¨ | clone() ã¾ãã¯åç
§ |
Pattern 2: ãã¹ã失æ
# Step 1: 失æãã¹ãç¹å®
cargo test 2>&1 | grep FAILED
# Step 2: 詳細åºåã§å®è¡
cargo test test_name -- --nocapture
# Step 3: é æ¬¡å®è¡ï¼ä¸¦ååé¡åé¿ï¼
cargo test -- --test-threads=1
# Step 4: ã¢ãµã¼ã·ã§ã³è©³ç´°
# pretty_assertions, instaä½¿ç¨æ¨å¥¨
Pattern 3: ã©ã³ã¿ã¤ã panic
# Step 1: ããã¯ãã¬ã¼ã¹åå¾
RUST_BACKTRACE=1 cargo run
# Step 2: å®å
¨ããã¯ãã¬ã¼ã¹
RUST_BACKTRACE=full cargo run
# Step 3: panicç®æç¹å®
# at src/lib.rs:42:5 ã確èª
# Step 4: ãããã¬ä½¿ç¨
rust-lldb target/debug/miyabi
Pattern 4: ãã¸ãã¯ã¨ã©ã¼
// dbg!ãã¯ã使ç¨
let result = dbg!(compute_value());
// tracing使ç¨
tracing::debug!(?value, "computed value");
// æ¡ä»¶ä»ããã°
if cfg!(debug_assertions) {
println!("Debug: {:?}", state);
}
â¡ P3: é«åº¦ãªãããã°ãã¼ã«
ãããã°ãã¼ã«ä¸è¦§
| ãã¼ã« | ç¨é | ã³ãã³ã |
|---|---|---|
rust-lldb |
ããã㬠| rust-lldb target/debug/miyabi |
cargo-expand |
ãã¯ãå±é | cargo expand |
cargo-asm |
ã¢ã»ã³ããªç¢ºèª | cargo asm |
valgrind |
ã¡ã¢ãªè¨ºæ | valgrind ./target/debug/miyabi |
miri |
UBæ¤åº | cargo +nightly miri test |
VS Codeãããã°è¨å®
{
"type": "lldb",
"request": "launch",
"name": "Debug Miyabi",
"cargo": {
"args": ["build", "--bin=miyabi"]
},
"args": [],
"cwd": "${workspaceFolder}"
}
ð¡ï¸ å ±éãããã¯å¯¾å¦
| ããã㯠| åå | å¯¾å¦ |
|---|---|---|
unwrap() on None |
Optionæªå¦ç | if let Some / ? |
unwrap() on Err |
Resultæªå¦ç | match / ? |
| index out of bounds | é åç¯å²å¤ | .get() / bounds check |
| overflow | ç®è¡ãªã¼ãã¼ããã¼ | checked_* / wrapping_* |
| stack overflow | ç¡éå帰 | å帰ãã¸ãã¯è¦ç´ã |
â æååºæº
| ãã§ãã¯é ç® | åºæº |
|---|---|
| ã¨ã©ã¼åé¡ | æ£ç¢ºãªåé¡ |
| æ ¹æ¬åå ç¹å® | åå æç¢ºå |
| 解決çæç¤º | å ·ä½çãªä¿®æ£æ¹æ³ |
| åçºé²æ¢ | ãã¹ã追å |
ð é¢é£Skills
- Rust Development: ãã«ãã»ãã¹ã
- Performance Analysis: ããã©ã¼ãã³ã¹åé¡
- Security Audit: ã»ãã¥ãªãã£åé¡