summaryrefslogtreecommitdiffstats
path: root/languages/cpp/debugger/TODO.txt
blob: 38aca109ce630392508c3c90b46286b7bae4f1f5 (plain)
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218

KDEV4 Debugger:

      - Launch framework

        - On fly launch types -- "dbus call to connect to a given app"

      - Advanced data visualization

        - Customizable by the user

      - Assembler display that's good

      - Hex display that's good

      - Register display that is good.

      - Debugger scripts? Remembering and replaying a set of
      commands?

      - Debugger as a visualizer tool?


TODO:

   - Check gdb version at startup.
   
   - P1:

      - Breakpoints duplicated on editing.

      - Global radix

      - Hiding of static members.

      - No horizonal scrollbar in the variables widget.

      - Debugging optimized binaries

      - Debugged application somtimes not killed.

      - Fix moving breakpoints on editing files

      - Pressing tab in memory range dialog modified the edited file. 

      - Testing stepping into code for which gdb can't find the file or fullname.
         Test stepping (or stepi) into undebuggable code.

      - Test files without debug info

      - Reconsider fixed font in variable widget

   - Investigate 'stop on shlib load breaking next" on Dario's project.

   - Incoming bug reports:

   - Check core files usage.

   - Fix remote target dialog, which is confusing and requires
     to specify tree scripts!

   - Big projects

       - Add support for other special types (STL)

   - Breakpoints

       - Add shortcuts to context menu.

       - Add icons

       - Status display column is just ugly
     
       - Handle "out of breakpoints" message.

       - Check that changing breakpoint when program is running works sanely.
         Need to either disable breakpoints widget when debugger is busy, or
         stop debugger when we add new breakpoint.

      - Implement gdb -> KDevelop breakpoint addition for all existing
        breakpoint types.
  


      - For function breakpoints, the 'file' property of breakpoint from
        gdb is not a fullname (gdb 6.4), so we don't find the file.

      - For function breakpoints with gdb CVS, clicking on marker corresponding
        to function breakpoint does not clear it, but adds a new one.

      - "Immediately leave function" breakpoint type.


   - Watchpoints redux:

       - Fix status display for watchpoints

       - Test loading of read watchpoints from session file.

       - Change "toogle watchpoint" into checkbox.

       - "Read watchpoint triggered" message disappears too soon.


   - Fix up the mess with relative vs. full names of files for breakpoints.

      
   UI cleanup:

       - The dialog box on watchpoint hit draws slowly initially.

       - Cntrl-Enter for "add watch".

       - Close all opened thread when opening other?

       - The dialog box shown in MI errors is ugly. Often, it contains names 
         of internal gdb functions, or no interest to outsiders.

       - Should strip formatting when copying from gdb output window.        

   Console command interaction:

       - Handle "Program exited" messages from CLI "continue".


   Code cleanup:

       - Rename FileLine to Code.

       - Kill raw char* manipulation.

       - Fix hardcoded color in framestack widget

       - Kill 'trimmableItem'.

   Minor tweaks:

       - Need some "scope" for error reporting. Say, we can try to set invalid
         breakpoint condition from session file, on debugger startup. Need to
         produce message like:
        "Error detected when setting condition for breakpoint 1", 
         not a pretty opaque error we get now.

       - Highlight type changes in variable widget

       - Highlight composite types changes?

       - Test that modifying breakpoint while application is running works.        

       - If remembered expresion includes dereferences pointer as a child,
          that child is still updated as we step.        

       - Error in 'finish' command (e.g. on the outer frame) hides the 
         current line indicator.
 
       - Should disable the 'finish' command on the outer frame.       

   Optimizations:

        - If we're in some function and looked at frame 0 and frame 1, and
          then run "finish", we need to reuse VarFrameRoot for previous frame
          1, which now became frame 0, no need to recreate it. Generally, need
          to preserve open/closed state of all variables for all scopes.




    

BUGS/ISSUES found:

   - "set edit off" breaks MI
   - no stop reason for stop on shared library load
   - using "interpreter mi -whatever" when already in MI
     mode causes gdb to output two "^done" messages and
     it confuses us.
   - No support for "character" format in -data-evaluate-expression 
     or -var-set-format
   - Some of the -stack* command operate on current frame unless one is
     specified, but -stack-list-arguments will print all frames.

   - Output of -thread-list-ids uses the following syntax

       {thread-id="1",thread-id="2"}

     which is neither tuple nor list.

   - Pending breakpoits broken in MI.


   - Varobj broken:

       - When entering new scope, we need to issue -stack-list-locals
         to get names of new varaibles in that scope.

   - When stopping inside undebuggable code (say, on watchpoint hit), 
     -file-list-exec-source-file reports the last valid source file.

   - It's not possible to find if intefiour is running or not.

  
   


Advantages of MI


- The information is easier to extract.

     - For watchpoint, getting the old and new value of
       watched expression for display is trivial. For CLI,
       this is tricky and not done in current code.