Review Request 121527: backport the latest gdb fixes from master to 4.7

Andreas Roth aroth at arsoft-online.com
Wed Dec 17 18:34:21 UTC 2014


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121527/
-----------------------------------------------------------

(Updated Dec. 17, 2014, 6:34 p.m.)


Review request for KDevelop.


Repository: kdevelop


Description
-------

I backported all the gdb related changes from master to the 4.7 branch. This also includes fixes to restore the gdb unit tests. Many thanks to Nikolai who did a great job there.
My entire git tree is available at https://github.com/aroth-arsoft/kdevelop/tree/4.7-gdb-fixes-from-master


gdb: do not use addCommandToFront in DisassembleWidget


gdb: DebugSession: add a testing mode for unit tests

Attempt to provide a cleaner environment during unit tests, in particular do
not read the user's .gdbinit files (those can mess up breakpoint counts etc.).

gdb: match structure more closely to the GDB/MI documentation and use cmd tokens

In particular, split Result and Async records into separate categories to mirror
the GDB documentation and account for the reality that async records can come
at any time according to the GDB doc, and need to be processed in any case.
These changes should help make the debugger more robust in the long term.

fix merge error


gdb: always process async notifications from GDB

The GDB documentation says that async notifications may arrive at any time,
even when all commands have returned a result.

gdb: remove magic constants in GDBMI::StreamRecord


gdb: remove flaky DebugSession::parseStreamRecord


gdb: add braces around multi-line if statement


gdb: examineCoreFile: update IDebugSession::state() to match unit tests


gdb: update session state more robustly based on async notifications

This is a first step towards picking up changes of the running state that are
caused by user commands to GDB.

gdb: make testIgnoreHitsBreakpoint more robust to timing issues

Instead of waiting for a debugger state, wait for a combination of debugger
state + breakpoint hit-count. This ensures that the test does the right thing
even when an intermediate PausedState is encountered during program startup.
It also happens to verify that the breakpoint hitCount is updated correctly.
gdb: testManualAttach: fix timing

gdb: unit tests: make timing more robust in some tests

Wait explicitly until the debugger is idle, which should avoid accidentally
accepting an intermittent pause state; it also ensures that data reloading
has completed e.g. for the frame stack model.

gdb: unittests: remove unused WAIT_FOR_STATE_FAIL


gdb: source code formatting changes


test_gdb: remove code duplication in check whether ptrace attach is allowed


test_gdb: add missing gdb_script_empty


gdb: make loading of our Python pretty printers into gdb more robust

Instead of relying on a cmake-configured gdbinit that might end up being
moved around by the user, we add the Python path at the point where we also
determine the path to gdbinit.

REVIEW: 121464

gdb: do not crash when receiving thread-info responses with running threads

gdb can operate in a mode where gdb receives commands while the inferior (or
a subset of the threads of the inferior) is running.

REVIEW: 121465

gdb: quick fix for compile error on OSX


gdb: fix two compile errors that were missed in the previous commit


test_gdb: make more unit tests more robust to timing variances


gdb: ignore "library-loaded" async notifications


gdb: warn the user when a debug launch will kill a currently running debug session

REVIEW: 121469

correct signal/slot connections caused by using different parameter types


test_gdb: use Breakpoint::State, anticipating potential future API changes


Diffs (updated)
-----

  debuggers/gdb/printers/CMakeLists.txt f772c8ad47bd012733f38669a28b83ffcf286fa2 
  debuggers/gdb/printers/gdbinit c82ac9790b0bc596a9783e093d46f15f2700408d 
  debuggers/gdb/unittests/gdb_script_empty PRE-CREATION 
  debuggers/gdb/unittests/gdbtest.h b9a961d6f3922076867f45d3af287e5addf6a56c 
  debuggers/gdb/unittests/gdbtest.cpp ef3cd4285420621cd1cea75f519c9349caca5e53 
  debuggers/gdb/variablecontroller.h f5ac8c12f2a2149ba747433d7f94501b3b2fe895 
  debuggers/gdb/variablecontroller.cpp 5198c09ec9f393cafe1d0737f72e4ba45d25a893 
  debuggers/gdb/DESIGN.txt ddefb700d8b38f923ee68816de04683e08ef66a3 
  debuggers/gdb/breakpointcontroller.h 1b8ae0e8d629047d9b7d2365b3ef89cd6a2ea35f 
  debuggers/gdb/breakpointcontroller.cpp 744e75061886b3b9cbb54344c846eac801f986e1 
  debuggers/gdb/debuggerplugin.h 0ec300a481b89c34572e530977ae531dc769179e 
  debuggers/gdb/debuggerplugin.cpp ca2bbafe18213da15cc262025715f19ad89d22a8 
  debuggers/gdb/debugjob.cpp 2807484b798d18778f5f9f203935cd72e6b1440a 
  debuggers/gdb/debugsession.h 7a1a3d98d62842fbf512825fcb1ab3407c9b35ab 
  debuggers/gdb/debugsession.cpp edc0d34473e99230db510457fd609a178bc8fa34 
  debuggers/gdb/disassemblewidget.cpp 91194ed7e69ff87ebdfbb5383c1b38939760d098 
  debuggers/gdb/gdb.h 31688cd91860ae0d2802c760fb54967024266854 
  debuggers/gdb/gdb.cpp 46420876149604a318caec7111f252dcc12b39b4 
  debuggers/gdb/gdbcommand.h e1ebc6988fb508a187d2775735c13b9123fcda04 
  debuggers/gdb/gdbcommand.cpp 67abbd87f1f0d10a84a45b3ee9f104c77ffe925b 
  debuggers/gdb/gdbcommandqueue.h 7d82f45a244d9fffb9b3a2ba5a82eaaa06f5c8d0 
  debuggers/gdb/gdbcommandqueue.cpp 801bc41e79f62a226de04cd1a91500c86a9cf1a3 
  debuggers/gdb/gdbframestackmodel.cpp e9e1fce3bd8059b5218e1d084419048ff4a37ea5 
  debuggers/gdb/gdbglobal.h ef31c027231abed9c917c7fcf8715ffb32ad0159 
  debuggers/gdb/gdblaunchconfig.cpp 720099894f48cb1676f538cd36482acb4fa9fd6d 
  debuggers/gdb/mi/gdbmi.h d5e92b8f0b3d989cbe529732fe3d6faf7a74172c 
  debuggers/gdb/mi/miparser.h 7096af0e7fdc9017fe9bd5127e69d6e59502221d 
  debuggers/gdb/mi/miparser.cpp 123c97ee9ecb3549ae0ee373a22c6cb9ed90a1a3 

Diff: https://git.reviewboard.kde.org/r/121527/diff/


Testing
-------

GDB unit tests runs without any failure


Thanks,

Andreas Roth

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20141217/e6620a33/attachment-0001.html>


More information about the KDevelop-devel mailing list