intel / vscode-tcf-debug

Visual Studio Code Target Communication Framework (TCF) Debugger Extension
MIT License
9 stars 2 forks source link

Continue, break or step not working (TRACE32) #5

Closed iebold closed 11 months ago

iebold commented 11 months ago

Also, neither continue, break or step is working (nothing printed in the log when I press the buttons in VSCode).

Originally posted by @wwbenayed in https://github.com/intel/vscode-tcf-debug/issues/1#issuecomment-1825286848

iebold commented 11 months ago

@wwbenayed: you should at least see the TCF message being sent for continue / step. Please provide more info.

wwbenayed commented 11 months ago

When I press continue or step, I don't see any new TCF message in the log. Only the CALL STACK switch to "Running" image

iebold commented 11 months ago

This is not enough information.

Did you short-circuit the handshake as not to load all the runcontrol contexts?

Note that according to the spec https://download.eclipse.org/tools/tcf/tcf-docs/TCF%20Service%20-%20Run%20Control.html#CmdResume

Only contexts with HasState = true can be resumed.

wwbenayed commented 11 months ago

HasState is true. Here is the complete log:

12:01:33 TCF debug session initialized
12:01:33 Launch request [object Object]
12:01:33 Connected!
12:01:33 ➡️ Sending ELocatorHello["Locator"]
12:01:33 ⬅️ Received Locator Hello ["ZeroCopy","T32_OsAwareness","DPrintf","Profiler","Streams","LineNumbers","MemoryMap","Memory","Breakpoints","Expressions","WR_SymbolsList","Symbols","StackTrace","Disassembly","PathMap","Registers","RunControl","Locator"]
12:01:33 ➡️ Sending CRunControl/0RunControlgetChildrennull
12:01:33 ⬅️ Parsing async result RunControl/0
12:01:33 ⬅️ Received Result RunControl/0 ["null","[\"root\"]",""]
12:01:33 ➡️ Sending CRunControl/1RunControlgetChildren"root"
12:01:33 ⬅️ Parsing async result RunControl/1
12:01:33 ⬅️ Received Result RunControl/1 ["null","[]",""]
12:01:33 ➡️ Sending CRunControl/2RunControlgetContext"root"
12:01:33 ⬅️ Parsing async result RunControl/2
12:01:33 ⬅️ Received Result RunControl/2 ["null","{\"ID\":\"root\",\"ProcessID\":\"root\",\"Name\":\"CortexM4\",\"CanSuspend\":true,\"CanResume\":63,\"HasState\":true,\"WordSize\":8,\"CanTerminate\":true,\"CanDetach\":true,\"RCGroup\":\"root\",\"BPGroup\":\"root\",\"SymbolsGroup\":\"root\",\"CPUGroup\":\"CPU\"}",""]
12:01:33 ➡️ Sending CBreakpoints/0Breakpointsset[]
12:01:33 ⬅️ Parsing async result Breakpoints/0
12:01:33 ⬅️ Received Result Breakpoints/0 ["null",""]
12:01:33 ➡️ Sending CRunControl/3RunControlgetChildrennull
12:01:33 ⬅️ Parsing async result RunControl/3
12:01:33 ⬅️ Received Result RunControl/3 ["null","[\"root\"]",""]
12:01:33 ➡️ Sending CRunControl/4RunControlgetChildren"root"
12:01:33 ⬅️ Parsing async result RunControl/4
12:01:33 ⬅️ Received Result RunControl/4 ["null","[]",""]
12:01:33 ➡️ Sending CRunControl/5RunControlgetContext"root"
12:01:33 ⬅️ Parsing async result RunControl/5
12:01:33 ⬅️ Received Result RunControl/5 ["null","{\"ID\":\"root\",\"ProcessID\":\"root\",\"Name\":\"CortexM4\",\"CanSuspend\":true,\"CanResume\":63,\"HasState\":true,\"WordSize\":8,\"CanTerminate\":true,\"CanDetach\":true,\"RCGroup\":\"root\",\"BPGroup\":\"root\",\"SymbolsGroup\":\"root\",\"CPUGroup\":\"CPU\"}",""]
12:01:33 ➡️ Sending CRunControl/6RunControlgetState"root"
12:01:33 ⬅️ Parsing async result RunControl/6
12:01:33 ⬅️ Received Result RunControl/6 ["null","true","536875800","\"Suspended\"","{\"Signal\":1,\"SignalName\":\"stopped at breakpoint\"}",""]
12:01:33 ➡️ Sending CRunControl/7RunControlgetChildrennull
12:01:33 ⬅️ Parsing async result RunControl/7
12:01:33 ⬅️ Received Result RunControl/7 ["null","[\"root\"]",""]
12:01:33 ➡️ Sending CRunControl/8RunControlgetChildren"root"
12:01:33 ⬅️ Parsing async result RunControl/8
12:01:33 ⬅️ Received Result RunControl/8 ["null","[]",""]
12:01:33 ➡️ Sending CRunControl/9RunControlgetContext"root"
12:01:33 ⬅️ Parsing async result RunControl/9
12:01:33 ⬅️ Received Result RunControl/9 ["null","{\"ID\":\"root\",\"ProcessID\":\"root\",\"Name\":\"CortexM4\",\"CanSuspend\":true,\"CanResume\":63,\"HasState\":true,\"WordSize\":8,\"CanTerminate\":true,\"CanDetach\":true,\"RCGroup\":\"root\",\"BPGroup\":\"root\",\"SymbolsGroup\":\"root\",\"CPUGroup\":\"CPU\"}",""]
12:01:33 ➡️ Sending CRunControl/10RunControlgetState"root"
12:01:33 ⬅️ Parsing async result RunControl/10
12:01:33 ⬅️ Received Result RunControl/10 ["null","true","536875800","\"Suspended\"","{\"Signal\":1,\"SignalName\":\"stopped at breakpoint\"}",""]
12:01:33 ➡️ Sending CStackTrace/0StackTracegetChildren"root"
12:01:33 ⬅️ Parsing async result StackTrace/0
12:01:33 ⬅️ Received Result StackTrace/0 ["null","[\"FP1.2.0.root\",\"FP0.2.0.root\"]",""]
12:01:33 ➡️ Sending CStackTrace/1StackTracegetContext["FP1.2.0.root","FP0.2.0.root"]
12:01:33 ⬅️ Parsing async result StackTrace/1
12:01:33 ⬅️ Received Result StackTrace/1 ["[{\"ID\":\"FP1.2.0.root\",\"ParentID\":\"root\",\"ProcessID\":\"root\",\"Index\":1,\"Level\":1,\"Walk\":true,\"FP\":536882928,\"FuncID\":\"@S100.0_2000047C.0_2000047B.10000000.i0.0_0\",\"IP\":536872066,\"RP\":536872066},{\"ID\":\"FP0.2.0.root\",\"ParentID\":\"root\",\"ProcessID\":\"root\",\"Index\":0,\"Level\":2,\"TopFrame\":true,\"Walk\":true,\"FP\":536882792,\"FuncID\":\"@S20.0_2000127C.0_200016AF.10000000.i0.0_0\",\"IP\":536875800}]","null",""]
12:01:33 ➡️ Sending CSymbols/0SymbolsfindByAddr"root"536872066
12:01:33 ⬅️ Parsing async result Symbols/0
12:01:33 ⬅️ Received Result Symbols/0 ["null","null",""]
12:01:33 ➡️ Sending CLineNumbers/0LineNumbersmapToSource"root"536872065536872066
12:01:33 ⬅️ Parsing async result LineNumbers/0
12:01:33 ⬅️ Received Result LineNumbers/0 ["null","[{\"SAddr\":536872062,\"SLine\":145,\"EAddr\":536872066,\"ELine\":146,\"File\":\"C:\\\\T32\\\\demo\\\\arm\\\\compiler\\\\gnu\\\\crt0.s\",\"IsStmt\":true}]",""]
12:01:33 ➡️ Sending CSymbols/1SymbolsfindByAddr"root"536875800
12:01:33 ⬅️ Parsing async result Symbols/1
12:01:33 ⬅️ Received Result Symbols/1 ["null","\"@S20.0_2000127C.0_200016AF.10000000.i0.0_0\"",""]
12:01:33 ➡️ Sending CSymbols/2SymbolsgetContext"@S20.0_2000127C.0_200016AF.10000000.i0.0_0"
12:01:33 ➡️ Sending CStackTrace/2StackTracegetChildren"root"
12:01:33 ⬅️ Parsing async result Symbols/2
12:01:33 ⬅️ Received Result Symbols/2 ["null","{\"ID\":\"@S20.0_2000127C.0_200016AF.10000000.i0.0_0\",\"OwnerID\":\"root\",\"UpdatePolicy\":0,\"Name\":\"main\",\"TypeClass\":8,\"Size\":1076,\"Address\":536875644,\"Class\":3}",""]
12:01:33 ➡️ Sending CLineNumbers/1LineNumbersmapToSource"root"536875799536875800
12:01:33 ⬅️ Parsing async result StackTrace/2
12:01:33 ⬅️ Received Result StackTrace/2 ["null","[\"FP1.2.0.root\",\"FP0.2.0.root\"]",""]
12:01:33 ➡️ Sending CStackTrace/3StackTracegetContext["FP1.2.0.root","FP0.2.0.root"]
12:01:33 ⬅️ Parsing async result LineNumbers/1
12:01:33 ⬅️ Received Result LineNumbers/1 ["null","[{\"SAddr\":536875794,\"SLine\":754,\"EAddr\":536875800,\"ELine\":755,\"File\":\"C:\\\\T32\\\\demo\\\\arm\\\\compiler\\\\gnu\\\\sieve.c\",\"IsStmt\":true}]",""]
12:01:33 ⬅️ Parsing async result StackTrace/3
12:01:33 ⬅️ Received Result StackTrace/3 ["[{\"ID\":\"FP1.2.0.root\",\"ParentID\":\"root\",\"ProcessID\":\"root\",\"Index\":1,\"Level\":1,\"Walk\":true,\"FP\":536882928,\"FuncID\":\"@S100.0_2000047C.0_2000047B.10000000.i0.0_0\",\"IP\":536872066,\"RP\":536872066},{\"ID\":\"FP0.2.0.root\",\"ParentID\":\"root\",\"ProcessID\":\"root\",\"Index\":0,\"Level\":2,\"TopFrame\":true,\"Walk\":true,\"FP\":536882792,\"FuncID\":\"@S20.0_2000127C.0_200016AF.10000000.i0.0_0\",\"IP\":536875800}]","null",""]
12:01:33 ➡️ Sending CSymbols/3SymbolsfindByAddr"root"536872066
12:01:33 ⬅️ Parsing async result Symbols/3
12:01:33 ⬅️ Received Result Symbols/3 ["null","null",""]
12:01:33 ➡️ Sending CLineNumbers/2LineNumbersmapToSource"root"536872065536872066
12:01:33 ⬅️ Parsing async result LineNumbers/2
12:01:33 ⬅️ Received Result LineNumbers/2 ["null","[{\"SAddr\":536872062,\"SLine\":145,\"EAddr\":536872066,\"ELine\":146,\"File\":\"C:\\\\T32\\\\demo\\\\arm\\\\compiler\\\\gnu\\\\crt0.s\",\"IsStmt\":true}]",""]
12:01:33 ➡️ Sending CSymbols/4SymbolsfindByAddr"root"536875800
12:01:33 ⬅️ Parsing async result Symbols/4
12:01:33 ⬅️ Received Result Symbols/4 ["null","\"@S20.0_2000127C.0_200016AF.10000000.i0.0_0\"",""]
12:01:33 ➡️ Sending CSymbols/5SymbolsgetContext"@S20.0_2000127C.0_200016AF.10000000.i0.0_0"
12:01:33 ⬅️ Parsing async result Symbols/5
12:01:33 ⬅️ Received Result Symbols/5 ["null","{\"ID\":\"@S20.0_2000127C.0_200016AF.10000000.i0.0_0\",\"OwnerID\":\"root\",\"UpdatePolicy\":0,\"Name\":\"main\",\"TypeClass\":8,\"Size\":1076,\"Address\":536875644,\"Class\":3}",""]
12:01:33 ➡️ Sending CLineNumbers/3LineNumbersmapToSource"root"536875799536875800
12:01:34 ⬅️ Parsing async result LineNumbers/3
12:01:34 ⬅️ Received Result LineNumbers/3 ["null","[{\"SAddr\":536875794,\"SLine\":754,\"EAddr\":536875800,\"ELine\":755,\"File\":\"C:\\\\T32\\\\demo\\\\arm\\\\compiler\\\\gnu\\\\sieve.c\",\"IsStmt\":true}]",""]
iebold commented 11 months ago

Oh, I think you found a bug. We do fallback on RunControl if ContextQuery is missing but we don't build the context info correctly.

iebold commented 11 months ago

I suspect https://github.com/intel/vscode-tcf-debug/releases/tag/v0.2.7 fixes this.

Please reopen if the bug remains and you have more info.