Bug 102319

Summary: Infinite recursion leads to a very long delay to display stack and makes impossible another debugging if stopped
Product: [Applications] kdevelop Reporter: Benjamin Piwowarski <bpiwowar>
Component: CPP DebuggerAssignee: kdevelop-bugs-null
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed In:

Description Benjamin Piwowarski 2005-03-23 22:37:47 UTC
Version:            (using KDE KDE 3.3.2)
Installed from:    Debian testing/unstable Packages

When debugging after a crash due to an infinite loop, like eg

void f() { f(); }
int main(int, char **) { f(); }

it takes a lot of time (and memory) to display the stack, if it is ever possible. Would it be possible to display only a part of the stack?

Moreover, when one stops the debugger before the stack is displayed the memory doesn't seem to be freed (and keep on growing). It is also impossible to start a new debugging process.
Comment 1 Vladimir Prus 2005-08-19 13:31:25 UTC
I think we should use some hardcoded limits for backtrace depth, and if we run into that limit, the framestack widget should contain a link, or button "show more". The only thing I don't yet decided is if it should be:
- a link in list
- a option in popup menu
- a button in list (is it even possible to put button in QListView?)
Comment 2 Vladimir Prus 2006-05-19 16:12:10 UTC
SVN commit 542513 by vprus:

Merge MI branch (/branches/work/kdevelop-debugger-mi).

BUG: 65818
BUG: 81277
BUG: 81670
BUG: 102319
BUG: 117842
BUG: 124041


 A             DESIGN.txt   branches/work/kdevelop-debugger-mi/DESIGN.txt#542512
 M  +7 -2      Makefile.am  
 A             TODO.txt   branches/work/kdevelop-debugger-mi/TODO.txt#542512
 M  +321 -113  breakpoint.cpp  
 M  +85 -93    breakpoint.h  
 D             callbacks.h  
 M  +1 -3      dbgcommand.cpp  
 M  +5 -10     dbgcommand.h  
 M  +13 -36    dbgcontroller.h  
 M  +13 -4     dbgpsdlg.cpp  
 M  +5 -0      dbgpsdlg.h  
 M  +1 -1      dbgtoolbar.cpp  
 M  +1 -1      debuggerconfigwidget.cpp  
 M  +4 -6      debuggerconfigwidgetbase.ui  
 M  +1 -0      debuggerdcopinterface.h  
 M  +152 -138  debuggerpart.cpp  
 M  +10 -2     debuggerpart.h  
 M  +1 -3      debuggertracingdialog.cpp  
 M  +349 -120  framestackwidget.cpp  
 M  +79 -18    framestackwidget.h  
 M  +359 -363  gdbbreakpointwidget.cpp  
 M  +28 -13    gdbbreakpointwidget.h  
 M  +53 -45    gdbcommand.cpp  
 M  +160 -32   gdbcommand.h  
 M  +835 -1291 gdbcontroller.cpp  
 M  +175 -61   gdbcontroller.h  
 M  +205 -15   gdboutputwidget.cpp  
 M  +69 -1     gdboutputwidget.h  
 M  +29 -202   gdbparser.cpp  
 M  +3 -30     gdbparser.h  
 A             label_with_double_click.cpp   branches/work/kdevelop-debugger-mi/label_with_double_click.cpp#542512
 A             label_with_double_click.h   branches/work/kdevelop-debugger-mi/label_with_double_click.h#542512
 M  +58 -88    memviewdlg.cpp  
 M  +12 -18    memviewdlg.h  
 M  +3 -0      mi/Makefile.am  
 M  +107 -0    mi/gdbmi.cpp  
 M  +124 -102  mi/gdbmi.h  
 M  +21 -11    mi/milexer.cpp  
 M  +3 -5      mi/milexer.h  
 M  +143 -115  mi/miparser.cpp  
 M  +27 -2     mi/miparser.h  
 A             mi/tokens.h   branches/work/kdevelop-debugger-mi/mi/tokens.h#542512
 A             tests/breakpoints (directory)   branches/work/kdevelop-debugger-mi/tests/breakpoints#542512
 A             tests/dll (directory)   branches/work/kdevelop-debugger-mi/tests/dll#542512
 A             tests/infinite_loop (directory)   branches/work/kdevelop-debugger-mi/tests/infinite_loop#542512
 M  +22 -7     tests/print_pointers/print_pointers.cpp  
 M  +7 -2      tests/print_pointers/print_pointers.kdevelop  
 A             tests/segfault (directory)   branches/work/kdevelop-debugger-mi/tests/segfault#542512
 A             tests/threads (directory)   branches/work/kdevelop-debugger-mi/tests/threads#542512
 A             tests/tracing (directory)   branches/work/kdevelop-debugger-mi/tests/tracing#542512
 M  +1 -1      tests/two_module/main.cpp  
 M  +1008 -592 variablewidget.cpp  
 M  +194 -91   variablewidget.h