Puerts 编译带调试符号的debug版v8 | Blurred code

Puerts 编译带调试符号的debug版v8

2023/12/23

LastMod:2023/12/23

Categories: UE

最近一段时间一直在和PuerTs打交道,有的时候碰见问题想跟到v8里看一下v8的具体实现细节。 Puerts的官方提供编译好的二进制,开箱即用。 从官方下下来的v8是release版,但是压缩包里带了个pdb,本来以为是可以直接挂上调试符号的,但是用VS的调试器挂上pdb以后仍然没法单步进去,只能反汇编调试,跟着v8一些简单的符号调,有点痛苦。

翻了一下也不只是我碰见了个这个问题

参考:v8.dll.pdb的符号文件无法加载 · Issue #7 · puerts/backend-v8

深入调查了一下,原因可能是因为编译v8的时候用的Release版,而且看样子还加了strip_debug_info之类的标记,对MSVC的pdb和谷歌的gn 这套不熟悉,不太确定到底是哪个标记导致的。

call gn gen out.gn\x64.release -args="target_os=""win"" target_cpu=""x64"" v8_use_external_startup_data=false v8_enable_i18n_support=false is_debug=false is_clang=false strip_debug_info=true symbol_level=0 v8_enable_pointer_compression=false is_component_build=true"

反正有现成的编译脚本,干脆自己编译一个debug版本好了。

fork了一份新的编译脚本,对编译9.4的脚本改了一些参数。

backend-v8-ci/windows_64MD_DLL_94_debug.cmd at master · BlurryLight/backend-v8-ci

并且用github actions也跑通了,可以白嫖github的服务来编译了。见 https://github.com/BlurryLight/backend-v8-ci/actions/runs/7301759685

如果需要 安卓/IOS/Windows静态库的可以照着上面的编译脚本酌情改下。