forked from epasveer/seer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.todo
125 lines (115 loc) · 7.81 KB
/
README.todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
LEGEND
------
✓ == done (i ^v u2713)
✗ == cancelled (i ^v u2717)
TODO
----
* Populate 'working directory' from executable name or current working directory.
* Add menu for 'Debug'. step/next/continue/finish.
* SeerCodeManager: A full QTreeWidget slows resizing of the Seer application.
* SeerCodeBrowser: Busy cursor when populating tree. Seems hard to do for some reason.
* Add binary path and name to Seer title bar.
* Add seer icon to application icon.
* Find debug icons (step, next, etc.)
* SeerBreakpoints: Need to display when an error occurs trying to set a breakpoint.
* Switch to use cmake.
* SeerThreadBrowser: Step/next by individual thread, or by all threads.
* SeerCodeWidget: Move add handleText logic into SeerCodeManager.
* With -run option, Load source file for main before running program.
* Add gdb 'pretty printers' for custom display of some objects. QString, etc.
* Add 'seer -remote host:port executable' to debug a remotely running application.
* Improve 'debug' dialog to include -attach, -run, -start, -corefile, -remote options.
* SeerTracepoints and SeerTracepointsLog.
Only works with gdbserver. There is no gdb/mi command. Use gdb 'trace' command.
* SeerDataVisualizer -data-read-memory-bytes
DONE
----
* ✗ Add logic to check if executable has changed (size,time) each time 'run' or 'start' is used.
No need. Seer reloads the executable every time anyway.
* ✓ Add multiple source dialogs in source file manager.
* ✓ Inherit from UI class instead of having an instance of one.
* ✓ Change all includes to <QtSomething/QClass> format.
* ✓ Add 'cd to working directory' gdb call.
* ✓ Change UI clases to have 'Form' as the postfix part of the ui name.
* ✓ Change signal/slots to use the non-macro version.
* ✓ Add -start flag to 'start' the debug session when seer starts. (break in 'main')
* ✓ Add --launch-mode option to 'start' or 'run' the debug session when seer starts.
* ✓ Rename SeerWidget to something more meaningful (SeerGdbWidget?)
* ✓ Handle step/next/continue/finish when program has not been start with 'run' or 'start'.
* ✓ Add widget for code browser.
* ✓ SeerCodeBrowser: Sort by File column.
* ✓ SeerCodeBrowser: Separate tree by Source, Header, Other.
* ✓ SeerCodeBrowser: Clear tree when new program is debugged.
* ✓ SeerCodeBrowser: Populate tree when program is loaded. Refresh will always refresh.
* ✓ SeerCodeBrowser: Resize column 0 to contents.
* ✓ A QSplitter between SeerCodeBrowser and SeerCodeManager.
* ✓ SeerCodeManager: Add 'search in tree' feature.
* ✓ SeerStackBrowser: Add a widget to show/manipulate the stack.
* ✓ SeerLocalsBrowser: Add a widget to show local variables.
* ✓ Add a QSplitter above the log widgets.
* ✓ Rename SeerArgumentsBrowser, SeerStackBrowser, SeerLocalsBrowser => SeerStackArgumentsBrowser, SeerStackFramesBrowser, SeerStackLocalsBrowser.
* ✓ Add SeerArgumentsBrowser, SeerStackBrowser, SeerLocalsBrowser to a tab widget.
* ✓ Add refresh icon to refresh buttons.
* ✓ SeerArgumentsBrowser: Add a widget to show stack function arguments.
* ✓ SeerBreakpointsBrowser.
* ✓ SeerBreakpoints - add/disable when double-click on code margin.
* ✓ SeerBreakpoints - line/breakpoint mismatch in codewidget when inserting breakpoint on a non-line.
* ✓ SeerBreakpoints - code widget sometimes stores wrong breakpoint number for a line number.
* ✓ SeerBreakpoints - add breakpoint enable/disable state to code widget.
* ✓ SeerBreakpoints - show enabled/disabled icon in code widgets.
* ✓ change to: seer [--run|--start] executable arg1 arg2 ...
* ✓ SeerBreakpoints - double click on breakpoint in breakpoint browser will change selected line.
it should only scroll to.
Have a separate "scrollToLine" signal and "selectLine" signals.
* ✓ When stepping/stopping, update the highlited line in each code window. Also when a source file is loaded.
* ✓ SeerCodeWidget: If line # not set, don't highlite a line.
* ✓ SeerBreakpoints: Refresh list/editors when temporary breakpoint is reached.
* ✓ SeerBreakpoints: Change toggle to separate enable/disable tool buttons. Add icons to context menu in SeerCodeWidget.
* ✓ SeerStackFrame: StackFrameUp and StackFrameDown. hightlight current frame.
Local variables and frame arguments should reflect which frame is selected.
* ✓ SeerStackFrame: Selecting frame selects current stack-frame. Locals will show variables for that.
* ✓ Implement 'run to here' feature. -exec-until recursive2.c:6
* ✓ SeerCodeWidget: Doesn't highlight multiple lines for the call stack if there are in a single file.
* ✓ SeerCodeWidget: Add prettier icons for breakpoints. gradient circles.
* ✓ SeerBreakpoints: Implement 'run to here'.
* ✓ SeerStackLocals: Doesn't parse complicated variables. Debug 'seer' and show locals from main().
* ✓ Convert all QRegularExpression to SeerUtl::parse.
* ✓ Handle process signals like sigsegv.
* ✓ SeerWatchpoints: Implement. Very similiar to breakpoints.
* ✓ SeerRegisters: Implement. View cpu registers.
* ✓ SeerVariables: Implement. View a list of user selected variables.
* ✓ Browser: Implement a visible/hidden mode to not parse the 'text'. Refresh when made visiable.
* ✓ Window updates: Smarten the updates by SeerGdbWidget having a 'stoppingPointReached' signal.
Windows will get the signal and update if they are visable.
* ✓ Interrupt: Add an 'interrupt' button to stop a running process. Need to put gdb/mi in async mode. Affects how windows
are updated after a stop point is reached.
* ✓ Double refresh: Fixed double refresh bug after switching to async mode. The stackFrame widget was setting the current frame
after each update, thus doing another refresh.
* ✓ Change qDebug to this format : qDebug() << __PRETTY_FUNCTION__ << ":" << somedebug;
* ✓ Add search bar to code editor. CTRL+F to show.
* ✓ Show variable value as a tooltip in the code editor when the variable name is selected in the text.
* ✓ Show variable value as an entry in a Variable Log view.
* ✓ GdbMonitor: Programs the require text from stdin aren't handled well to get the input. Need to fix.
Use a separate tty for the running executable for its stdin/stdout/stderr. The main tty is for gdb/mi interaction.
* ✓ Remove log for specific gdb channels. Keep just one for all channel output.
* ✓ GdbMonitor: Doesn't handle stdout text longer than 65536 reliably. Key off last char being a \n???
Fixed. Changed from QProcess::readAll() to QProcess::readLine().
Also, Explorer uses shared libraries that are not all loaded when Explorer is started. A manual refresh is needed.
* ✓ Display dialog on errors - ^error,msg="malformed line offset: \"%2\""
* ✓ Add 'seer -core core.file executable' to debug core files.
* ✓ Add 'seer -attach pid# executable' to debug a running application.
* ✓ Add a log for "~" and "=" text. Call it "GDB log"
Add a log for all text. Call it "SEER log".
* ✓ Renamed SeedCodeWidget to SeerEditorWidget
* ✓ Renamed SeedCodeManager to SeerEditorManager
* ✓ Renamed SeedCodeBrowser to SeerSourceBrowser
* ✓ SeerSharedLibraries: -file-list-shared-libraries (Need to manually refresh. Won't happen automatically after executable is
loadded)
(gdb)
-file-list-shared-libraries
^done,shared-libraries=[
{id="/lib/libfoo.so",target-name="/lib/libfoo.so",host-name="/lib/libfoo.so",symbols-loaded="1",thread-group="i1",ranges=[{from="0x72815989",to="0x728162c0"}]},
{id="/lib/libbar.so",target-name="/lib/libbar.so",host-name="/lib/libbar.so",symbols-loaded="1",thread-group="i1",ranges=[{from="0x76ee48c0",to="0x76ee9160"}]}
]
(gdb)
* ✓ Display debug dialog if no launch method is specified on the seer command line.