Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: docs/gdb_jit_interface.md

Issue 1347153006: [Docs] Add wiki content to Markdown docs (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Prerequisites
2
3 * V8 3.0.9 or newer
4 * GDB 7.0 or newer
5 * Linux OS
6 * CPU with Intel-compatible architecture (ia32 or x64)
7
8 # Introduction
9
10 GDB JIT interface integration allows V8 to provide GDB with the symbol and debug ging information for a native code emitted in runtime.
11
12 When GDB JIT interface is disabled a typical backtrace in GDB will contain frame s marked with ??. This frames correspond to dynamically generated code:
13
14 ```
15 #8 0x08281674 in v8::internal::Runtime_SetProperty (args=...) at src/runtime.cc :3758
16 #9 0xf5cae28e in ?? ()
17 #10 0xf5cc3a0a in ?? ()
18 #11 0xf5cc38f4 in ?? ()
19 #12 0xf5cbef19 in ?? ()
20 #13 0xf5cb09a2 in ?? ()
21 #14 0x0809e0a5 in v8::internal::Invoke (construct=false, func=..., receiver=..., argc=0, args=0x0,
22 has_pending_exception=0xffffd46f) at src/execution.cc:97
23 ```
24
25 However enabling GDB JIT integration allows GDB to produce more informative stac k trace:
26
27 ```
28 #6 0x082857fc in v8::internal::Runtime_SetProperty (args=...) at src/runtime.cc :3758
29 #7 0xf5cae28e in ?? ()
30 #8 0xf5cc3a0a in loop () at test.js:6
31 #9 0xf5cc38f4 in test.js () at test.js:13
32 #10 0xf5cbef19 in ?? ()
33 #11 0xf5cb09a2 in ?? ()
34 #12 0x0809e1f9 in v8::internal::Invoke (construct=false, func=..., receiver=..., argc=0, args=0x0,
35 has_pending_exception=0xffffd44f) at src/execution.cc:97
36 ```
37
38 Frames still unknown to GDB correspond to native code without source information . See [GDBJITInterface#KnownLimitations](GDBJITInterface#KnownLimitations.md) fo r more details.
39
40 GDB JIT interface is specified in the GDB documentation: http://sourceware.org/g db/current/onlinedocs/gdb/JIT-Interface.html
41
42 # Enabling GDB JIT integration
43
44 GDBJIT currently is by default excluded from the compilation and disabled in run time. To enable it:
45
46 1. Build V8 library with `ENABLE_GDB_JIT_INTERFACE` defined. If you are using scons to build V8 run it with `gdbjit=on`.
47 1. Pass `--gdbjit` flag when starting V8.
48
49 To check that you have enabled GDB JIT integration correctly try setting breakpo int on `__jit_debug_register_code`. This function will be invoked to notify GDB about new code objects.
50
51 # Known Limitations
52
53 * GDB side of JIT Interface currently (as of GDB 7.2) does not handle registra tion of code objects very effectively. Each next registration takes more time: w ith 500 registered objects each next registration takes more than 50ms, with 100 0 registered code objects - more than 300 ms. This problem was reported to GDB d evelopers (http://sourceware.org/ml/gdb/2011-01/msg00002.html) but currently the re is no solution available. To reduce pressure on GDB current implementation of GDB JIT integration operates in two modes: _default_ and _full_ (enabled by `-- gdbjit-full` flag). In _default_ mode V8 notifies GDB only about code objects th at have source information attached (this usually includes all user scripts). In _full_ - about all generated code objects (stubs, ICs, trampolines).
54
55 * On x64 GDB is unable to properly unwind stack without `.eh_frame` section (I ssue 1053 (on Google Code))
56
57 * GDB is not notified about code deserialized from the snapshot (Issue 1054 (o n Google Code))
58
59 * Only Linux OS on Intel-compatible CPUs is supported. For different OSes eith er a different ELF-header should be generated or a completely different object f ormat should be used.
60
61 * Enabling GDB JIT interface disables compacting GC. This is done to reduce pr essure on GDB as unregistering and registering each moved code object will incur considerable overhead.
62
63 * GDB JIT integration provides only _approximate_ source information. It does not provide any information about local variables, function's arguments, stack l ayout etc. It does not enable stepping through JavaScript code or setting breakp oint on the given line. However one can set a breakpoint on a function by it's n ame.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698