Files
Gen4_R-Car_Trace32/2_Trunk/demo/arm/kernel/windows/win32.men
2025-10-14 09:52:32 +09:00

669 lines
18 KiB
Plaintext

; --------------------------------------------------------------------------------
; @Title: Windows Std specific menu
; @Description: -
; @Author: DIE
; @Copyright: (c) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: windows.mh 7861 2022-07-29 13:45:42Z amerkle $
NAME "TASK.WINDOWS"
IF !MENU.EXIST("TASK.WINDOWS")
(
add
menu
(
POPUP "Windows"
(
default
menuitem "[:objects]Display &Processes" "TASK.Process"
menuitem "[:objects]Display &Threads" "TASK.Thread"
menuitem "[:objects]Display &Modules" "TASK.MODule"
separator
popup "&Process Debugging"
(
menuitem "[:symbols]&Load Symbols..."
(
dialog
(
header "TASK.sYmbol.LOAD"
pos 0. 0. 26. 3.
box "Process name"
pos 1. 1. 16. 1.
procl: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.exe"
entry %line &file
dialog.set procl "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &procl
&procl=dialog.string(procl)
TASK.sYmbol.LOAD "&procl"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "[:symbols]&Delete Symbols..."
(
dialog
(
header "TASK.sYmbol.DELete"
pos 0. 0. 26. 3.
box "Process name"
pos 1. 1. 16. 1.
procd: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.exe"
entry %line &file
dialog.set procd "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &procd
&procd=dialog.string(procd)
TASK.sYmbol.DELete "&procd"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "Debug New Process..."
(
PRIVATE &sExtDir &sOptionMachine
&sExtDir=TASK.GETDIR()
IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF SYStem.Option.MACHINESPACES()
(
&sOptionMachine=STRing.CUT("/MACHINE ",-1.)
)
)
DO "&sExtDir/app_debug" /DIALOG &sOptionMachine
)
;separator
;menuitem "Help Process Debugging" "HELP __RTOS_WINSTD_User_Processes"
)
popup "D&LL Debugging"
(
menuitem "[:symbols]&Load Symbols..."
(
dialog
(
header "TASK.sYmbol.LOADDLL"
pos 0. 0. 26. 3.
box "DLL name"
pos 1. 1. 16. 1.
dlll: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.dll"
entry %line &file
dialog.set dlll "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &dlll
&dlll=dialog.string(dlll)
TASK.sYmbol.LOADDLL "&dlll"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "[:symbols]&Delete Symbols..."
(
dialog
(
header "TASK.sYmbol.DELeteDLL"
pos 0. 0. 26. 3.
box "DLL name"
pos 1. 1. 16. 1.
dlld: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.dll"
entry %line &file
dialog.set dlld "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &dlld
&dlld=dialog.string(dlld)
TASK.sYmbol.DELeteDLL "&dlld"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
)
popup "&Module Debugging"
(
menuitem "[:symbols]&Load Symbols..."
(
dialog
(
header "TASK.sYmbol.LOADKM"
pos 0. 0. 26. 3.
box "Module name"
pos 1. 1. 16. 1.
kmodl: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.sys"
entry %line &file
dialog.set kmodl "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &kmodl
&kmodl=dialog.string(kmodl)
TASK.sYmbol.LOADKM "&kmodl"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "[:symbols]&Delete Symbols..."
(
dialog
(
header "TASK.sYmbol.DELeteKM"
pos 0. 0. 26. 3.
box "Module name"
pos 1. 1. 16. 1.
kmodd: defedit "" ""
pos 18. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.sys"
entry %line &file
dialog.set kmodd "&file"
)
pos 2. 3. 7. 1.
defbutton "Ok"
(
PRIVATE &kmodd
&kmodd=dialog.string(kmodd)
TASK.sYmbol.DELeteKM "&kmodd"
dialog.end
)
pos 17. 3. 7. 1.
button "Cancel" "dialog.end"
)
)
menuitem "Debug Module on entry..."
(
PRIVATE &sExtDir &sOptionMachine
&sExtDir=TASK.GETDIR()
IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF SYStem.Option.MACHINESPACES()
(
&sOptionMachine=STRing.CUT("/MACHINE ",-1.)
)
)
DO "&(sExtDir)/mod_debug" /DIALOG &sOptionMachine
)
;separator
;menuitem "Help Process Debugging" "HELP __RTOS_WINSTD_User_Processes"
)
separator
menuitem "[:dump]Generate RAM Dump"
(
PRIVATE &sExtDir
&sExtDir=TASK.GETDIR()
DO "&(sExtDir)/ramdump.cmm"
)
separator
popup "[:symbols]&Autoloader"
(
menuitem "[:symbols]List Components" "sYmbol.AutoLoad.List"
menuitem "[:init]Check Now!" "sYmbol.AutoLoad.CHECK"
menuitem "Set Loader Script"
(
dialog
(
header "sYmbol.AutoLoad.CHECKWINCE"
pos 0. 0. 40. 3.
box "autoload batch script"
pos 1. 1. 30. 1
cmmfile: edit "autoload.cmm" ""
pos 32. 1. 7. 1.
button "Browse..."
(
PRIVATE &file
dialog.file "*.cmm"
entry %line &file
dialog.set cmmfile "&file"
)
pos 1. 3. 16. 1.
checkon: checkbox "automatic check" ""
pos 10. 4.5 8.
defbutton "Ok"
(
PRIVATE &cmm
&cmm=dialog.string(cmmfile)
sYmbol.AutoLoad.CHECKWINCE "do &cmm "
sYmbol.AutoLoad.CHECK ; trigger check manually
if dialog.boolean(checkon)
sYmbol.AutoLoad.CHECK ON ; automatic check enabled
else
sYmbol.AutoLoad.CHECK OFF ; automatic check disabled
dialog.end
)
pos 22. 4.5 8.
button "Cancel" "dialog.end"
)
)
menuitem "Set Components Checked"
(
dialog
(
header "TASK.sYmbol.Option AutoLoad"
pos 0. 0. 25.
proc: checkbox "Process (Processes)"
(
if dialog.boolean(proc)
TASK.sYmbol.Option AutoLoad Process
else
TASK.sYmbol.Option AutoLoad NoProcess
)
lib: checkbox "Library (All Libraries)"
(
if dialog.boolean(lib)
TASK.sYmbol.Option AutoLoad Library
else
TASK.sYmbol.Option AutoLoad NoLibrary
)
mod: checkbox "Module (Kernel modules)"
(
if dialog.boolean(mod)
TASK.sYmbol.Option AutoLoad KModule
else
TASK.sYmbol.Option AutoLoad NoKModule
)
)
dialog.set mod ((task.y.o(autoload)&0x1)!=0)
dialog.set proc ((task.y.o(autoload)&0x2)!=0)
dialog.set lib ((task.y.o(autoload)&0x4)!=0)
)
menuitem "[:config]Set Preferences"
(
dialog
(
header "Autoloader Preferences"
POS 0. 0. 42. 1.
LINE "Download the debug symbols from Microsoft symbol server?"
POS 2. 1. 10. 1.
Download.1: CHOOSEBOX "Always" ""
Download.2: CHOOSEBOX "Never" ""
Download.3: CHOOSEBOX "Ask the user" ""
POS 0. 4. 42. 1.
LINE "Failing to locate the debug symbols?"
POS 2. 5. 42. 1.
notfound.1: CHOOSEBOX "Ignore" ""
notfound.2: CHOOSEBOX "Ask the user" ""
POS 10. 7. 10. 1.
DEFBUTTON "OK" "CONTinue"
POS 21. 7. 10. 1.
BUTTON "Cancel" "GOTO cancel"
CLOSE "GOTO cancel"
)
setdefault:
PRIVATE &sExtDir
&sExtDir=TASK.GETDIR()
(
PRIVATE &def1 &def2
DO "&(sExtDir)/preferences" get
ENTRY &def1 &def2
IF ("&def1"=="yes")
(
DIALOG.Set Download.1
)
ELSE IF ("&def1"=="no")
(
DIALOG.Set Download.2
)
ELSE IF ("&def1"=="ask")
(
DIALOG.Set Download.3
)
IF ("&def2"=="ignore")
(
DIALOG.Set notfound.1
)
ELSE IF ("&def2"=="ask")
(
DIALOG.Set notfound.2
)
)
waitforprefok:
STOP
GOTO dialog_pref_ok
dialog_pref_ok:
IF DIALOG.BOOLEAN(Download.1)
(
DO "&(sExtDir)/preferences" set symbol_download yes
)
ELSE IF DIALOG.BOOLEAN(Download.2)
(
DO "&(sExtDir)/preferences" set symbol_download no
)
ELSE IF DIALOG.BOOLEAN(Download.3)
(
DO "&(sExtDir)/preferences" set symbol_download ask
)
IF DIALOG.BOOLEAN(notfound.1)
(
DO "&(sExtDir)/preferences" set symbol_not_found ignore
)
ELSE IF DIALOG.BOOLEAN(notfound.2)
(
DO "&(sExtDir)/preferences" set symbol_not_found ask
)
cancel:
DIALOG.END
)
)
separator
popup "[:coverage]&Stack Coverage"
(
menuitem "[:coverage]&List Stacks" "TASK.STacK.view"
menuitem "[:plus]Add Task" "TASK.STacK.ADD"
menuitem "[:remove]Remove Task" "TASK.STacK.RM"
enable ice()||fire()
menuitem "&Reset Coverage" "TASK.STacK.RESet"
)
)
popup "Trace"
(
popup "[:alist]List"
(
separator
menuitem "[:alist]&Task Switches" "Trace.List List.TASK"
menuitem "[:alist]&Default and Tasks" "Trace.List List.TASK DEFault"
)
)
popup "Perf"
(
separator
popup "&Task Runtime"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
)
if (ice()||fire())&&!a.mode.flow()
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak&&Write
)
Break.Delete /Alpha
Break.Set C:0x1F:::task.config(magic)++(task.config(magicsize)-1) /Alpha
)
if a.mode.flow()
(
Break.Delete /TraceEnable
Break.Set C:0x1F:::task.config(magic) /TraceEnable
)
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASK"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASK"
menuitem "[:achart]Tracking with Trace &List"
(
Trace.List List.TASK DEFault /Track
Trace.CHART.TASK /Track
)
)
popup "Task &Function Runtime"
(
menuitem "&Prepare"
(
if t.method.analyzer()
(
Analyzer.AutoInit on
Analyzer.STATistic.PreFetch on
)
if (ice()||fire())&&!a.mode.flow()
(
if a.config.hac()
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak
Sample.Enable if BetaBreak
Mark.A if AlphaBreak
Mark.B if BetaBreak
)
)
else
(
Analyzer.ReProgram
(
Sample.Enable if AlphaBreak||BetaBreak
Mark.A if AlphaBreak
Mark.B if BetaBreak
)
)
Break.Delete /Alpha /Beta /Charly
Break.SetFunc
Break.Set C:0x1F:::task.config(magic)++(task.config(magicsize)-1) /Alpha
)
if a.mode.flow()
(
Break.Delete /TraceData
Break.Set C:0x1F:::task.config(magic) /TraceData
)
)
menuitem "[:perf]Show &Numerical" "Trace.STATistic.TASKFUNC"
menuitem "[:perf]Show as &Tree" "Trace.STATistic.TASKTREE"
menuitem "[:perf]Show &Detailed Tree" "Trace.STATistic.TASKTREE ALL"
menuitem "[:achart]Show as &Timing" "Trace.CHART.TASKFUNC"
menuitem "[:alist]Show N&esting" "Trace.List List.TASK FUNC TI.FUNC"
)
)
popup "&Help"
(
MENUITEM "[:manual]OS Awareness Manual Windows Std" "HELP __RTOS_WINDOWS_"
)
)
menu "task.p"
(
default
menuitem "[:objects]Display detailed"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
TASK.Process &nAddress
)
menuitem "[:var]Display process struct"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
Var.View %m %s (_EPROCESS)*&nAddress
)
separator
menuitem "[:symbols]Load process symbols" "TASK.sYmbol.LOAD track.address()"
menuitem "[:symbols]Delete Process Symbols" "TASK.sYmbol.DELete track.address()"
separator
menuitem "[:dump]Dump process entry"
(
PRIVATE &pAddress
&pAddress=track.address()
Data.dump &pAddress /l /dialog
)
)
menu "task.t"
(
default
menuitem "[:objects]Display detailed"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
TASK.Thread &nAddress
)
menuitem "[:var]Display thread struct"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
Var.View %m %s (_ETHREAD)*&nAddress
)
separator
menuitem "[:varframe]Display Stack Frame"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
Var.Frame /Locals /Caller /Task &nAddress
)
menuitem "[:reg]Display Registers"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
Register /Task &nAddress
)
menuitem "Switch Context"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
Register.TASK &nAddress
)
separator
menuitem "[:plus]Add to Stack Cov"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
TASK.STK.ADD &nAddress
)
menuitem "[:remove]Rm from Stack Cov"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
TASK.STK.RM &nAddress
)
separator
menuitem "[:dump]Dump thread entry"
(
PRIVATE &pAddress
&pAddress=track.address()
Data.dump &pAddress /l /dialog
)
)
menu "task.mod"
(
default
menuitem "[:objects]Display detailed"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
TASK.MODule &nAddress
)
menuitem "[:var]Display module struct"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
Var.View %m %s (_LDR_DATA_TABLE_ENTRY)*&nAddress
)
separator
;menuitem "Load Module Symbols" "TASK.sYmbol.LOADKM track.address()"
menuitem "[:symbols]Load module symbols"
(
PRIVATE &nAddress
&nAddress=address.offset(track.address())
&nAddress=task.mod.base(&nAddress)
sYmbol.AutoLOAD.CHECK
sYmbol.AutoLOAD.TOUCH &nAddress
)
menuitem "[:symbols]Delete Module Symbols" "TASK.sYmbol.DELeteKM track.address()"
separator
menuitem "[:dump]Dump module entry"
(
PRIVATE &pAddress
&pAddress=track.address()
Data.dump &pAddress /l /dialog
)
)
menu "task.lib"
(
default
;menuitem "Display detailed"
;(
; &address=address.offset(track.address())
; TASK.Library &address
;)
menuitem "[:var]Display Library Struct"
(
PRIVATE &nAddress &nSpaceId
&nAddress=address.offset(track.address())
&nSpaceId=address.segment(track.address())
Var.View %m %s (_LDR_DATA_TABLE_ENTRY)*(&nSpaceId:&nAddress)
)
separator
menuitem "[:symbols]Load Library Symbols"
(
PRIVATE &nAddress &nSpaceId &nMagic
&nAddress=address.offset(track.address())
&nSpaceId=address.segment(track.address())
&nMagic=task.proc.sid2magic(&nSpaceId)
TASK.sYmbol.LOADDLL &nAddress &nMagic
)
menuitem "[:symbols]Delete Library Symbols"
(
PRIVATE &nAddress &nSpaceId &nMagic
&nAddress=address.offset(track.address())
&nSpaceId=address.segment(track.address())
&nMagic=task.proc.sid2magic(&nSpaceId)
TASK.sYmbol.DELeteDLL &nAddress &nMagic
)
separator
menuitem "[:var]Dump Library Entry"
(
PRIVATE &nAddress &nSpaceId
&nAddress=address.offset(track.address())
&nSpaceId=address.segment(track.address())
Data.dump &nSpaceId:&nAddress /l /dialog
)
)
)