반응형
하단의 링크의 내용을 실습해보기 위해 구성 도중 발생한 에러 처리
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
반응형
'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 |