首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >V8嵌入无法打印`v8::Local` `对象

V8嵌入无法打印`v8::Local` `对象
EN

Stack Overflow用户
提问于 2022-01-19 03:43:19
回答 1查看 164关注 0票数 0

总之

我试图打印出v8::Local对象内容,使用v8/tools/gdbinitv8/tools/lldb_commands.py助手脚本,我得到了Empty LineSyntax Error消息。我错过了什么吗?所以我的问题是,如何打印v8::Local 对象内容?

大多数配置来自正式的嵌入教程(https://v8.dev/docs/embed),没有任何修改。以下是一些细节:

  • 资料来源:“主要”(2022/01/18)
  • GN构建配置:"x64.release.sample“
  • 程序:v8/samples/hello-world.cc
  • 平台:"Ubuntu18.04 + GDB10“/ "macOS 10.14 + LLDB11”

GDB ouput:(ubuntu18.04)

代码语言:javascript
复制
###  Compile & Link
$ g++ -I. -Iinclude samples/hello-world.cc -o hello_world -lv8_monolith -ldl -Lout.gn/x64.release.sample/obj/ -pthread -std=c++14 -DV8_COMPRESS_POINTERS -g

###  Debug
$ gdb -x tools/gdbinit ./hello_world

(gdb) p result
$1 = {val_ = 0x55d4f7a35408}
(gdb) jlh result
A syntax error in expression, near `)(result).val_))'.

LLDB输出:(macos10.14)

代码语言:javascript
复制
###  Compile & Link
$ g++ -I. -Iinclude samples/hello-world.cc -o hello_world -lv8_monolith -Lout.gn/x64.release.sample/obj/ -pthread -std=c++14 -DV8_COMPRESS_POINTERS -g

###  Debug
$ lldb ./hello_world

(lldb) command script import tools/lldb_commands.py
(lldb) b hello-world.cc:56
(lldb) r
(lldb) p *utf8
(char *) $0 = 0x0000000102302590 "Hello, World!"
(lldb) p result
(v8::Local<v8::Value>) $1 = (val_ = 0x0000000102815668)
(lldb) jlh result

(lldb)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 12:01:40

对于调试,请尝试使用调试生成:使用gn args <your_output_dir>设置is_debug = true,然后重新编译。

如果您坚持调试发布模式二进制文件,您可以启用jlhv8_enable_object_print = true GN,但是您的经验在其他方面可能会很奇怪(例如步进和断点将不可靠,许多值将是<optimized out>等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70765063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档