How to resolve the algorithm Stack traces step by step in the OxygenBasic programming language
How to resolve the algorithm Stack traces step by step in the OxygenBasic programming language
Table of Contents
Problem Statement
Many programming languages allow for introspection of the current call stack environment. This can be for a variety of purposes such as enforcing security checks, debugging, or for getting access to the stack frame of callers.
Print out (in a manner considered suitable for the platform) the current call stack. The amount of information printed for each frame on the call stack is not constrained, but should include at least the name of the function or method at that level of the stack frame. You may explicitly add a call to produce the stack trace to the (example) code being instrumented for examination. The task should allow the program to continue after generating the stack trace. The task report here must include the trace from a sample program.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Stack traces step by step in the OxygenBasic programming language
Source code in the oxygenbasic programming language
'32bit x86
static string Report
macro ReportStack(n)
'===================
'
scope
'
static sys stack[0X100],stackptr,e
'
'CAPTURE IMAGE OF UP TO 256 ENTRIES
'
'
mov eax,n
cmp eax,0x100
(
jle exit
mov eax,0x100 'UPPER LIMIT
)
mov e,eax
mov stackptr,esp
lea edx,stack
mov ecx,e
mov esi,esp
(
mov eax,[esi]
mov [edx],eax
add esi,4
add edx,4
dec ecx
jg repeat
)
sys i
string cr=chr(13)+chr(10), tab=chr(9)
'
for i=1 to e
report+=hex(stackptr+(i-1)*4,8) tab hex(i-1,2) tab hex(stack[i],8) cr
next
'
end scope
'
end macro
'====
'TEST
'====
function foo()
'=============
push 0x44556677
push 0x33445566
push 0x22334455
push 0x11223344
ReportStack(8)
end function
Report+="Trace inside foo
"
foo()
print report
'putfile "s.txt",Report
/*
RESULT:
Trace inside foo
0017FE00 00 11223344
0017FE04 01 22334455
0017FE08 02 33445566
0017FE0C 03 44556677
0017FE10 04 005EAB1C
0017FE14 05 0017FE40
0017FE18 06 10002D5F
0017FE1C 07 00000000
*/
You may also check:How to resolve the algorithm Play recorded sounds step by step in the Julia programming language
You may also check:How to resolve the algorithm Greatest element of a list step by step in the Lua programming language
You may also check:How to resolve the algorithm Exponentiation order step by step in the Julia programming language
You may also check:How to resolve the algorithm Even or odd step by step in the Ol programming language
You may also check:How to resolve the algorithm Jacobi symbol step by step in the Phix programming language