Hi all,

I'm following [1] to debug builtins (specifically 
`InterpreterEntryTrampoline`) with gdb. But it segfaults when I step 
through the code. After checking the assembly it turns out that the 
instruction has been modified.

The desired instructions provided by `--print-builtin-code` are as follows:

kind = BUILTIN
name = InterpreterEntryTrampoline
compiler = unknown
address = 0x171700005181
...
Instructions (size = 1584)
0x171707687180   0 448b570b       movl r10,[rdi+0xb]   
0x171707687184   4 4d03d6        REX.W addq r10,r14
...

but as shown in gdb, %r10 is replaced with %edx in the first instruction:

0x223e07687181   mov  0xb(%rdi),%edx
0x223e07687184   add  %r14,%r10
...

When I run the program without setting breakpoint on 
`Builtins_InterpreterEntryTrampoline` in gdb, it exits normally. [1] 
mentioned that "GDB modifies the binary". I'm wondering if gdb is modifying 
the memory content here? How can I prevent this?

I also tried lldb, but after setting the breakpoint on 
`Builtins_InterpreterEntryTrampoline`, it didn't stop at this function.

I'm using Ubuntu 20.04 with gdb 9.2 and lldb 10.0. Any help would be much 
appreciated.

Regards,
Jiading


[1] https://v8.dev/docs/gdb
[2] args.gn:
is_component_build = true
is_debug = true
symbol_level = 2
target_cpu = "x64"
use_goma = false
v8_enable_backtrace = true
v8_enable_fast_mksnapshot = true
v8_enable_slow_dchecks = true
v8_optimized_debug = false
```
[3] foo.js:
function foo() { return 1; }
foo();
%OptimizeFunctionOnNextCall(foo);
foo();
foo();

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/cc524ae3-1474-4a18-a420-6550459d2bf2n%40googlegroups.com.

Reply via email to