Enable BPF program instruction traces (#15613) (#15621)

(cherry picked from commit 3cd00965a7)

Co-authored-by: Jack May <jack@solana.com>
This commit is contained in:
mergify[bot]
2021-03-02 00:35:55 -08:00
committed by GitHub
parent f0afbf4948
commit 297c08310f
4 changed files with 13 additions and 4 deletions

View File

@@ -12,6 +12,7 @@ edition = "2018"
bincode = "1.3.1"
byteorder = "1.3.4"
curve25519-dalek = "3"
log = "0.4.11"
num-derive = "0.3"
num-traits = "0.2"
rand_core = "0.6.2"

View File

@@ -14,6 +14,7 @@ use crate::{
serialization::{deserialize_parameters, serialize_parameters},
syscalls::SyscallError,
};
use log::{log_enabled, trace, Level::Trace};
use solana_rbpf::{
ebpf::MM_HEAP_START,
error::{EbpfError, UserDefinedError},
@@ -83,7 +84,7 @@ pub fn create_and_cache_executor(
max_call_depth: bpf_compute_budget.max_call_depth,
stack_frame_size: bpf_compute_budget.stack_frame_size,
enable_instruction_meter: true,
enable_instruction_tracing: false,
enable_instruction_tracing: log_enabled!(Trace),
},
)
.map_err(|e| map_ebpf_error(invoke_context, e))?;
@@ -812,6 +813,13 @@ impl Executor for BpfExecutor {
before - after,
before
);
if log_enabled!(Trace) {
let mut trace_buffer = String::new();
vm.get_tracer()
.write(&mut trace_buffer, vm.get_program())
.unwrap();
trace!("BPF Program Instruction Trace:\n{}", trace_buffer);
}
match result {
Ok(status) => {
if status != SUCCESS {