https://github.com/linqlover/debugloginspector
Parse Squeak DebugLogs and inspect them in a debugger
https://github.com/linqlover/debugloginspector
Last synced: 5 months ago
JSON representation
Parse Squeak DebugLogs and inspect them in a debugger
- Host: GitHub
- URL: https://github.com/linqlover/debugloginspector
- Owner: LinqLover
- License: mit
- Created: 2022-09-21T21:02:06.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-10-07T12:22:24.000Z (over 3 years ago)
- Last Synced: 2025-04-05T15:27:13.537Z (about 1 year ago)
- Language: Smalltalk
- Size: 112 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# DebugLogInspector
Parse Squeak DebugLogs and inspect them in a debugger.
Very young protoype. Not matured, thought-through, or tested thoroughly. Very likely not covers all edge cases of DebugLogs.
## What is it?
Whenever Squeak opens a debugger, a file named `SqueakDebug.log` is created. You can also manually create a DebugLog by right-clicking the context stack pane and selecting "copy bug report to clipboard". The result is a text file which contains many important information to reproduce a bug, but still is hard to grasp for programmers that are used to the graphical representation of the Squeak Debugger.
Example DebugLog:
```
21 September 2022 11:10:41.197736 pm
VM: Win32 - Smalltalk
Image: Squeak6.1alpha [latest update: #22218]
SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir C:\Users\Christoph\Documents\squeak\TraceDebugger
Trusted Dir C:\Users\Christoph\Documents\squeak\TraceDebugger\Christoph
Untrusted Dir C:\Users\Christoph\OneDrive\Dokumente\My Squeak
EventSensor>>processEvent:
pc: 440
Receiver: an EventSensor
Arguments and temporary variables:
evt: #(2 138885171 46 0 8 46 0 1)
type: 2
buttons: nil
window: 1
unicode: nil
ascii: nil
Receiver's instance variables:
mouseButtons: 0
mousePosition: 1044@294
mouseWheelDelta: 0@0
keyboardBuffer: a SharedQueue(0)
interruptKey: 2094
interruptSemaphore: a Semaphore(a Process(44889) in EventSensor>>userInterruptWatcher...etc...
eventQueue: a SharedQueue(1)
inputSemaphore: a Semaphore()
lastEventPoll: 3841247441194
hasInputSemaphore: true
lastEventTime: 138889875
EventSensor>>fetchMoreEvents
pc: 146
Receiver: an EventSensor
Arguments and temporary variables:
eventBuffer: #(2 138885171 46 0 8 46 0 1)
type: 2
Receiver's instance variables:
mouseButtons: 0
mousePosition: 1044@294
mouseWheelDelta: 0@0
keyboardBuffer: a SharedQueue(0)
interruptKey: 2094
interruptSemaphore: a Semaphore(a Process(44889) in EventSensor>>userInterruptWatcher...etc...
eventQueue: a SharedQueue(1)
inputSemaphore: a Semaphore()
lastEventPoll: 3841247441194
hasInputSemaphore: true
lastEventTime: 138889875
...etc...
```
(... truncated for clarity, you get the ieda. You can find some complete examples [here](./packages/DebugLogInspector.package/DebugLogInspectorTest.class/instance/fixtureHalt.st).)
The idea of this small tool is to parse a DebugLog and display it in a normal debugger:

You can:
- Interact with the context stack pane
- Inspect all objects and stack variables that were contained in the debug log
- Use the Where button to reveal the latest message send (requires a version of `Context>>#printDetails:` that includes the pc)
- Browse senders/implementors, variable references/assignments, class definition/inheritance/hierarchy like in a normal debugger
You cannot:
- Continue the program through the stepping buttons
- Inspect the details of displayed variables (they are just flat placeholders)
## Installation
```smalltalk
Metacello new
baseline: 'DebugLogInspector';
repository: 'github://LinqLover/DebugLogInspector';
get;
load.
```
## Usage
There are multiple entrypoints:
- Copy the bug report into clipboard, then do:
```smalltalk
DebugLogParser debugFromClipboard.
```
- Drag a `SqueakDebug.log` file into your image, or open it in a File List, and select "inspect debug log".