반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- HTTP 완벽 가이드
- 타입스크립트
- dfs
- Algorithm
- typescript
- dp
- type challenge
- 문자열
- ip
- TCP
- BFS
- javascript
- socket
- 자바스크립트
- 쉬운 문제
- 가천대
- Nestjs
- 수학
- HTTP
- 그래프
- 프로그래머스
- 소켓
- Node.js
- 프로그래머스 레벨 2
- 크롤링
- 백준
- 레벨 1
- 타입 챌린지
- 알고리즘
- Crawling
Archives
- Today
- Total
kakasoo
2. vscode에서 러스트 디버깅 하는 법 본문
반응형
바이너리에 대한 메모리 레이아웃
fn main() {
let a = 2;
let result = stack_only(a);
dbg!(result);
}
fn stack_only(b: i32) -> i32 {
let c = 3;
return b + c + stack_and_heap();
}
fn stack_and_heap() -> i32 {
let d = 5;
let e = Box::new(7);
return d + *e;
}
main
: 함수의 진입점으로, 여기서부터 프로그램이 시작된다.i32
: 32비트 정수를 의미한다.Bow::new(7)
: 러스트의 스마트 포인터 타입
이 코드를 해석하기 위해 일단 gdb
를 설치하자.
gdb는 GUI 환경에서 debugging을 도와주는 도구로, homebrew가 있다면 쉽게 설치할 수 있다.
나는 GUI 환경 대신 vscode의 확장으로 CodeLLDB
를 설치하고, 이걸로 vscode 내에서 디버깅을 하겠다.
브레이킹 포인트를 곳곳에 찍은 다음 Command + Shift + D로 디버깅과 실행 사이드바를 열 수 있다.
여기서 Debug exec를 실행해주면 된다.
launch.json
// root-folder/.vscode/launch.json
{
// IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
// 기존 특성에 대한 설명을 보려면 가리킵니다.
// 자세한 내용을 보려면 <https://go.microsoft.com/fwlink/?linkid=830387을(를)> 방문하세요.
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug executable",
"cargo": {
"args": ["build"]
},
"args": [],
"cwd": "${workspaceFolder}/target/debug"
}
]
}
vscode에서 디버거를 실행하기 위해서는 어떤 디버거를 사용할 것인지를 알려주어야 한다.
위처럼 내용을 넣으면 된다.
root-folder가 파일을 연 workspace라고 가정할 때, .vscode 폴더를 생성하고 안에 launch.json을 생성한다.
별도로 폴더와 파일을 생성하지 않더라도 debug를 실행시키면 설정이 비어있는 저 파일을 생성해준다.
반응형
'프로그래밍 > Rust' 카테고리의 다른 글
6. 소유권 (Ownership) (0) | 2024.03.30 |
---|---|
5. 러스트 프로그래밍 시작 - 사용자 입력 받기 (1) | 2024.03.24 |
4. 러스트 프로그래밍 시작 - 함수 작성하기 (0) | 2024.03.24 |
3. 러스트 매크로 (0) | 2024.03.24 |
1. 러스트 학습 시작 전 기본 개념들 정리 (1) | 2024.03.24 |