!lbrdump (dump Last Branch Record entries)
Description of '!lbrdump' command in HyperDbg.
Command
!lbrdump
Syntax
!lbrdump [core CoreId (hex)]
Description
Dumps the Last Branch Record (LBR) entries.
Parameters
[core CoreId (hex)] (optional)
Optional value to dump the LBR entries from a specific core. Add core xx to your command; thus, the LBR entries from core xx will be dumped. If you don't specify this option, then by default, the LBR entries from all cores are dumped.
Examples
The following command dumps LBR entries from all cores. Note that in this case, only the second core has the target entries; in other words, only the second core executed the 'lbr_save' function as a result of triggering an event.
HyperDbg> !lbrdump
LBR Chronological Trace on core: 0x0
no LBR entries found for this core
you can use the 'lbr_save();' function in the script engine
on the target core to save the LBR entries before dumping
===========================================================
LBR Chronological Trace on core: 0x1
no LBR entries found for this core
you can use the 'lbr_save();' function in the script engine
on the target core to save the LBR entries before dumping
===========================================================
LBR Chronological Trace on core: 0x2
[20] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eba To: 00007ff7808c8eea
[21] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eea To: 00007ff7808c8d44
[22] Branch Mispredicted: false, Cycle Count (Decimal): 0002 - From: 00007ff7808c8d6a To: 00007ff7808c8de5
[23] Branch Mispredicted: false, Cycle Count (Decimal): 0004 - From: 00007ff7808c8e11 To: 00007ff7808c8e5d
[24] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e61 To: 00007ff7808c8e8a
[25] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e8e To: 00007ff7808c8ebc
[26] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8ec0 To: 00007ff7808c8ecb
[27] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8ecf To: 00007ff7808c8ee1
[28] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eea To: 00007ff7808c8d44
[29] Branch Mispredicted: false, Cycle Count (Decimal): 0002 - From: 00007ff7808c8d6a To: 00007ff7808c8de5
[30] Branch Mispredicted: false, Cycle Count (Decimal): 0004 - From: 00007ff7808c8e11 To: 00007ff7808c8e5d
[31] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e61 To: 00007ff7808c8e8a
[ 0] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e8e To: 00007ff7808c8ebc
[ 1] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8ec0 To: 00007ff7808c8ecb
[ 2] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8ecf To: 00007ff7808c8ee1
[ 3] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eea To: 00007ff7808c8d44
[ 4] Branch Mispredicted: false, Cycle Count (Decimal): 0002 - From: 00007ff7808c8d6a To: 00007ff7808c8de5
[ 5] Branch Mispredicted: false, Cycle Count (Decimal): 0004 - From: 00007ff7808c8e11 To: 00007ff7808c8e5d
[ 6] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e61 To: 00007ff7808c8e8a
[ 7] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e8e To: 00007ff7808c8ebc
[ 8] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8ec0 To: 00007ff7808c8ecb
[ 9] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8ecf To: 00007ff7808c8ee1
[10] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eea To: 00007ff7808c8d44
[11] Branch Mispredicted: false, Cycle Count (Decimal): 0002 - From: 00007ff7808c8d6a To: 00007ff7808c8de5
[12] Branch Mispredicted: false, Cycle Count (Decimal): 0004 - From: 00007ff7808c8e11 To: 00007ff7808c8e5d
[13] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8e61 To: 00007ff7808c8e8a
[14] Branch Mispredicted: false, Cycle Count (Decimal): 0023 - From: 00007ff7808c8e9f To: 00007ff7808c8eb1
[15] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eba To: 00007ff7808c8eea
[16] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8eea To: 00007ff7808c8d44
[17] Branch Mispredicted: true , Cycle Count (Decimal): 0001 - From: 00007ff7808c8d54 To: 00007ff7808c8eef
[18] Branch Mispredicted: false, Cycle Count (Decimal): 0001 - From: 00007ff7808c8efb To: 00007ff7808c913e
[19] Branch Mispredicted: false, Cycle Count (Decimal): 0015 - From: 00007ff7808c9144 To: 00007ff7808c2fd7
===========================================================
LBR Chronological Trace on core: 0x3
no LBR entries found for this core
you can use the 'lbr_save();' function in the script engine
on the target core to save the LBR entries before dumping
===========================================================
LBR Chronological Trace on core: 0x4
no LBR entries found for this core
you can use the 'lbr_save();' function in the script engine
on the target core to save the LBR entries before dumping
===========================================================
...The following command dumps LBR entries from core 0x2.
On a machine that supports Architectural LBR, there is additional information available for each branch entry, such as the branch type and whether the cycle count is valid. For example, on an Architectural LBR machine:
SDK
To perform LBR dump functionality, you need to use the following function in libhyperdbg:
Remarks
Starting from v0.19, this command was added to the HyperDbg debugger.
This command is guaranteed to keep debuggee in a halt state (in Debugger Mode); thus, nothing will change during its execution.
Requirements
None
Related
Last updated