()
| 11 | =============================================================================*/ |
| 12 | |
| 13 | function help() { |
| 14 | if (supports_call_command()) { |
| 15 | print("--------------------------------------------------------------------"); |
| 16 | print(" LIVE debugging only"); |
| 17 | print("--------------------------------------------------------------------"); |
| 18 | print(" !jlh(\"local_handle_var_name\")"); |
| 19 | print(" prints object held by the handle"); |
| 20 | print(" e.g. !jlh(\"key\") or !jlh(\"this->receiver_\")"); |
| 21 | print(" !job(address_or_taggedint)"); |
| 22 | print(" prints object at the address, e.g. !job(0x235cb869f9)"); |
| 23 | print(" !jst() or !jst"); |
| 24 | print(" prints javascript stack (output goes into the console)"); |
| 25 | print(" !jsbp() or !jsbp"); |
| 26 | print(" sets bp in v8::internal::Execution::Call"); |
| 27 | print(""); |
| 28 | } |
| 29 | |
| 30 | print("--------------------------------------------------------------------"); |
| 31 | print(" Setup of the script"); |
| 32 | print("--------------------------------------------------------------------"); |
| 33 | print(" !set_module(\"module_name_no_extension\")"); |
| 34 | print(" we'll try the usual suspects for where v8's code might have"); |
| 35 | print(" been linked into, but you can also set it manually,"); |
| 36 | print(" e.g. !set_module(\"v8_for_testing\")"); |
| 37 | print(" !set_iso(isolate_address)"); |
| 38 | print(" call this function before using !mem or other heap routines"); |
| 39 | print(""); |
| 40 | |
| 41 | print("--------------------------------------------------------------------"); |
| 42 | print(" Managed heap"); |
| 43 | print("--------------------------------------------------------------------"); |
| 44 | print(" !mem or !mem(\"space1[ space2 ...]\")"); |
| 45 | print(" prints memory chunks from the 'space' owned by the heap in the"); |
| 46 | print(" isolate set by !set_iso; valid values for 'space' are:"); |
| 47 | print(" new, old, map, code, lo [large], nlo [newlarge], ro [readonly]"); |
| 48 | print(" if no 'space' specified prints memory chunks for all spaces,"); |
| 49 | print(" e.g. !mem(\"code\"), !mem(\"ro new old\")"); |
| 50 | print(" !where(address)"); |
| 51 | print(" prints name of the space and address of the MemoryChunk the"); |
| 52 | print(" 'address' is from, e.g. !where(0x235cb869f9)"); |
| 53 | print(" !rs(chunk_address, set_id = 0)"); |
| 54 | print(" prints slots from the remembered set in the MemoryChunk. If"); |
| 55 | print(" 'chunk_address' isn't specified, prints for all chunks in the"); |
| 56 | print(" old space; 'set_id' should match RememberedSetType enum,"); |
| 57 | print(" e.g. !rs, !rs 0x2fb14780000, !rs(0x2fb14780000, 1)"); |
| 58 | print(""); |
| 59 | |
| 60 | print("--------------------------------------------------------------------"); |
| 61 | print(" Managed objects"); |
| 62 | print("--------------------------------------------------------------------"); |
| 63 | print(" !jot(tagged_addr, depth)"); |
| 64 | print(" dumps the tree of objects using 'tagged_addr' as a root,"); |
| 65 | print(" assumes that pointer fields are aligned at ptr_size boundary,"); |
| 66 | print(" unspecified depth means 'unlimited',"); |
| 67 | print(" e.g. !jot(0x235cb869f9, 2), !jot 0x235cb869f9"); |
| 68 | print(" !jo_in_range(start_addr, end_addr)"); |
| 69 | print(" prints address/map pointers of objects found inside the range"); |
| 70 | print(" specified by 'start_addr' and 'end_addr', assumes the object"); |
nothing calls this directly
no test coverage detected