반응형

하단의 링크의 내용을 실습해보기 위해 구성 도중 발생한 에러 처리

https://xiphiasilver.net/practice-for-chromium-with-v8-exploit/

 

mkdir v8

git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

export PATH="$PATH:/home/username/v8/depot_tools"

fetch v8

문서들을 보면

export PATH=$(pwd)/depot_tools;$PATH

 

이렇게 PATH를 잡아주지만, fetch not found 에러가 발생하기에 다른 방식으로 PATH를 잡아주었다.

 

depot_tools/ninja.py: Could not find Ninja in the third_party of the current project, nor in your PATH.

상기와 같이 Could not find Ninja발생시에는 간단하게 설치해주면 된다.

apt install ninja-build

 

reproduce

 

1.git checkout [hash]

2.gclient sync -D (위 hash에 해당하는 버전으로 sync)

3. ./tools/dev/gm.py x64.debug --gdb --gdbjit 로 gdb옵션주어서 재빌드-> deprecated

그냥 아래의 방법으로 하면됨(debug 빌드 예시 + 옵션은 쪼매 만진거)

$ cd v8/buildtools/linux64
$ ./gn args out/x64.debug

#add
is_debug=true
symbol_level=2
v8_enable_gdbjit=true
v8_enable_backtrace=true
# 각 기능부별 추적 기능 args

#rebuild
rm -rf out/x64.debug
tools/dev/gm.py out/x64.debug

debug 빌드는 x64.debug, release 빌드는 x64.release

 

4.이후에 ./d8 에 바로밑에 snippet js파일로 생성해서 그대로 넣고 디버깅해보기

cd out.x64.debug
gdb-peda ./d8
run reproduce.js

 

---------------------------------------------

본인이 자주쓰는 방법은 아래와 같다.

git checkout <hash>

gclient sync -D

out/x64.release/args.gn수정

더 안정적으로 구현되기 위한 코드 적용

/v8/v8 디렉터리로 이동후 ./tools/dev/v8gen.py x64.release

ninja -C ./out.gn/x64.release 로 빌드하기

 

 

-ref-

https://stackoverflow.com/questions/75695463/chromium-checkout-build-could-not-find-ninja

https://www.youtube.com/watch?v=-QxQjM61ng0

반응형

'v8' 카테고리의 다른 글

V8 extras  (0) 2024.05.06
Jank Busters Part One  (0) 2024.05.05
Custom startup snapshots  (0) 2024.04.25
Code caching  (0) 2024.04.23
Digging into the TurboFan JIT  (0) 2024.04.22

+ Recent posts