Commit Graph

272 Commits

Author SHA1 Message Date
hjk
f479c1979e Debugger: Move common dumper module code to DumperBase
Change-Id: Id411edcefbb56c480b87829062395dcb5244d2a5
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-30 08:49:19 +00:00
hjk
eafde22e16 Debugger: Handle extra dumpers with LLDB
This generalizes part of the previously GDB-only code paths

Change-Id: Id32798073e3c8bcb23bfedf463bebc866c8275e2
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-29 15:42:31 +00:00
hjk
4ea0138423 Debugger: Replace gnuplot by python-matplotlib for graph dumper
Better functionality and availability than the gnuplot version.
The feature ("Show array-like data in external plot window")
will be automatically enabled if 'from matplotlib import pyplot'
succeeds.

Change-Id: I1799534ac5f878d3e43e47289d1b563b52bb4378
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-26 09:14:08 +01:00
hjk
4c928f6099 Debugger: Disable GDB's own pretty printers when use is not wanted
Saves up to 20% on large uniform structures.

Change-Id: I98c8c942f0accac7e2db1d8b06bf7ed156967306
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-26 09:13:53 +01:00
hjk
d4bdae9a3d Debugger: Make dumper reload with Python 2.x
Change-Id: If23573fab0f951bed0f86b70500dd7e9862df887
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-01-22 12:57:15 +01:00
hjk
61c49a122f Debugger: Initial shot at native Qml-and-C++ debugging
Only for GDB now, requires a debug build of Qt, not feature complete.
To enable it, run with QTC_DEBUGGER_NATIVE_MIXED=1 and press
the 'oo' button in the debugger toolbar.

Change-Id: I28aac9db13f7067e03cc364b89cc8046fa213dae
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-22 12:39:02 +01:00
hjk
cca1030432 Debugger: Add python command to add dumpers
More flexible than hacking on the C++ side. Also registers
the custom dumper path to make it reloadable like the
"built-in" dumpers.

Change-Id: I0405f7278e28eb75d83fdd4a861f5a5c32d97a0e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2015-01-22 10:55:36 +01:00
hjk
d573195b67 Debugger: Improve handling of imported system dumpers
At least for a few cases (std::string, vector, ...) this can succeed.

Change-Id: Idfa4ced4cb20295472d001181a83373acd89883a
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2015-01-15 11:13:22 +01:00
hjk
20396d7809 Debugger: Use Python for GDB stack extraction in native mixed mode
Change-Id: I7ca4a080c9b5e5992f44e5f3d8aa5af7296abe99
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-12-12 12:36:41 +01:00
hjk
62d21d123c Debugger: Remove traces of outdated attempt at combined stepping
Has not been usable for a while and will be superseded by
"native" mixed stepping.

Change-Id: I2902a98b7ad4e4b29e389e54fb6488bf711840dd
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-12-12 10:53:43 +01:00
hjk
48915c6231 Debugger: Rename variables named 'type' in dumpers
It's confusing in the presence of the global function of that name,
and it's better to distinguish type names and type objects anyway.

Change-Id: I3e0674dbc96a8e2b245ed61fabd2fe7cac5a72e5
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-12-12 10:27:46 +01:00
hjk
5e19f322cf Debugger: Move listOfLocals to Dumper class
We will need access to more dumper data later.

Change-Id: Id8fe09b192ac7d2ae822a0323cda13c0e2ff81e3
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-12-12 10:27:18 +01:00
hjk
48c6decb07 Debugger: Remove some spaces in debug output
Change-Id: I69c4a00d4dfef91aa2727c295246845bef70b4bc
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-12-12 10:14:32 +01:00
hjk
6d6e8de4a0 Debugger: Use Python instead of GDB/MI to retrieve stack
This will be useful to create artificial QML stack frames.

Change-Id: I41cb87f8dea69d88695fea46a1ae2b0270cbec1a
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-12-08 13:04:24 +01:00
hjk
a4a7a4b25f Debugger: Add command for simpler dumper reloading
... to facilitate shorter round trips in dumper development.

Change-Id: Ie457293fd137528d74008fc11137b47d92f3859d
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-12-02 10:40:10 +01:00
hjk
298e2de7df Debugger: Centralize handling of optimized out values with GDB
There were a couple of situation where the is_optimized_out flag
was not used and later produced (caught) exceptions on access,
or where the still availably type was not shown.

Change-Id: I7ad5aa09a19357e50739d9fdf32f7423e30fe011
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-11-18 16:14:50 +01:00
hjk
7066e3348d Debugger: Improve tooltip for out-of-scope items with gdb
Previously, hovering over 'i' when stopped in main()

   int foo() { int i; }
   int main() {}

produced a tooltip without contents, now there is an
item saying "<not accessible>"

Change-Id: Id4de72541f74af93ba65c2a9508cf21e1dcd6569
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
2014-11-14 13:38:07 +01:00
hjk
1baca8e797 Debugger: Add dumper for Qt3's (sic!) QString
Change-Id: I24d266587425a5c50ec3dcb548a29877730cbdff
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-10-10 13:25:02 +02:00
hjk
2776536a7e Debugger: Fix QHash display of "compact" keys
Add make std::string usable as "compact" key.

Change-Id: Idbfcf9d299e2dde392025166a20c3d0ab60239a6
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-09-12 15:36:01 +02:00
Christian Stenger
895421897e Dumper: Fix typo and exception handling
Change-Id: I4008d5427da7cedc0f57183a25519a1aef1fcb7a
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-07-24 16:55:12 +02:00
Joerg Bornemann
20b11960b5 Debugger: fix Qt namespace detection for gdb 7.4.1-debian
Change-Id: I379ff3dec051b22ffe313e6543020488550df97e
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-07-23 14:24:58 +02:00
hjk
b39363e747 Debugger: Remove dumper debugging output
Change-Id: I0dc23dd5d69885f8ddeb933ae644a983406bbb05
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
2014-06-30 17:15:38 +02:00
hjk
281aa9e0d6 Debugger: Add personaltypes.py as default location for local additions
Change-Id: Ib393258970f04f2e829f959adedfbc588a966a10
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-06-24 09:41:16 +02:00
hjk
9968271d3f Debugger: Streamline gdb.Value field access workarounds
Change-Id: I1b3b81019f6861353e5ada350fadbe3c8734f186
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-06-19 14:14:16 +02:00
Eike Ziller
cbf4de0315 Merge remote-tracking branch 'origin/3.1'
Conflicts:
	tests/auto/debugger/tst_dumpers.cpp

Change-Id: I1bad0c1477d7fd6996c0f8ca82e76ba521bc0dcc
2014-06-18 14:20:58 +02:00
hjk
e3979fe09d Debugger: Make dumper work with GDB 7.7
GDB 7.7 changed behavior e.g. for the names of anonymous fields,
we need to adjust dumpers and some tests.

Change-Id: I25ae32cc56c4ff63b677a04d6ed9c250e0252140
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2014-06-18 12:17:42 +02:00
hjk
a63ed31b9b Debugger: Fix base class name printing for GDB/CLI
Change-Id: Ib007c9d0035387018acd608d67d4a9632c17ab8b
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-06-17 09:04:41 +02:00
hjk
b51ec79f7c Debugger: Remove some debugging output
Change-Id: I4df8bd423bfce6b3005c5821ea71358a8ac260ea
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-06-17 07:42:21 +02:00
hjk
fffbf9472a Debugger: Make dumpers somewhat work in command line GDB
With

    python sys.path.insert(1, '/data/dev/creator/share/qtcreator/debugger/')
    python from gdbbridge import *

in .gdbinit there's a new "GDB command", called "pp".

With code like

    int main(int argc, char *argv[])
    {
        QString ss = "Hello";
        QApplication app(argc, argv);
        app.setObjectName(ss);
        // break here
    }

the 'pp' command can be used as follows:

(gdb) pp app
app =
   [
      <Myns::QGuiApplication> = {"Hello"}
      staticMetaObject = <Myns::QMetaObject> = {""}
      [parent] = <Myns::QObject *> = {"0x0"}
      [children] = <Myns::QObjectList> = {"<3 items>"}
      [properties] = "<>0 items>"
      [methods] = "<6 items>"
      [signals] = "<1 items>"
   ],<Myns::QApplication> = {"Hello"}

(gdb) pp app [properties],[children]
app =
   [
      <Myns::QGuiApplication> = {"Hello"}
      staticMetaObject = <Myns::QMetaObject> = {""}
      [parent] = <Myns::QObject *> = {"0x0"}
      [children] = [
         <Myns::QObject> = {""}
         <Myns::QObject> = {""}
         <Myns::QObject> = {"fusion"}
      ],<Myns::QObjectList> = {"<3 items>"}
      [properties] = [
         windowIcon = <Myns::QVariant (QIcon)> = {""}
         cursorFlashTime = <Myns::QVariant (int)> = {"1000"}
         doubleClickInterval = <Myns::QVariant (int)> = {"400"}
         keyboardInputInterval = <Myns::QVariant (int)> = {"400"}
         wheelScrollLines = <Myns::QVariant (int)> = {"3"}
         globalStrut = <Myns::QVariant (QSize)> = {"(0, 0)"}
         startDragTime = <Myns::QVariant (int)> = {"500"}
         startDragDistance = <Myns::QVariant (int)> = {"10"}
         styleSheet = <Myns::QVariant (QString)> = {""}
         autoSipEnabled = <Myns::QVariant (bool)> = {"true"}
      ],"<10 items>"
      [methods] = "<6 items>"
      [signals] = "<1 items>"
   ],<Myns::QApplication> = {"Hello"}

(gdb) pp ss
ss =
   <Myns::QString> = {"Hello"}

Change-Id: I6e4714a5cfe34c38917500d114ad9a70d20cff39
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-06-16 16:28:59 +02:00
hjk
252048ef01 Debugger: Make char * displayable in separate windows
Task-number: QTCREATORBUG-7313
Change-Id: I8d475dd94a48e7a1d5efe4c2c0d90cb6bdf9b3e2
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-05-28 15:07:59 +02:00
hjk
3ae6c09714 Debugger: Regression cleanup
Sneaked in with 40052046fd.

Change-Id: I711c5b8e6869647a447a5f17f693de571b5f0337
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-05-20 13:01:31 +02:00
hjk
40052046fd Debugger: Rework display length limitation systems
There are two values now, one to limit an entry in the L&E view
(default 100) and a hard upper limit (at 1 mio).

If displayed values are elided, the true length is shown in addition.

Change-Id: I180b70446c18e258c164e5af75b88d4c8b6c53f2
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-05-16 17:50:18 +02:00
hjk
6107fdc276 Debugger: Add "composite" watchers
Multiple expressions can be separated by semicolon,
and arrays allow index ranges given as [a..b] or
with strides [a.(s).b].

Change-Id: I0b7b4ee500a5f6f5027d777b0a1e8ee5a28a7cd5
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-05-13 12:58:35 +02:00
hjk
d2ad6aa972 Debugger: Simplify array dumper user code
Heads up: This switches the argument order to allow a default
argument for the inner type if it can be determined from the
base pointer.

Change-Id: I9bf80fcdd51b5db8e7c65adba551ca667912cd86
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-05-06 13:50:25 +02:00
hjk
03c6df1fab Debugger: Fix staticMetaObject extraction with LLDB
When asked for Foo::staticMetaObject, it will find
any *::staticMetaObject. Looking for the mangled name
finds the one we need.

Change-Id: I4508a3c282bc8a46efa011efb73f32cdbf46398c
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
2014-04-11 14:24:35 +02:00
hjk
b5f4678846 Debugger: Handle failing inferior calls more gracefully
At least for GDB on Windows that's a rather typical situation due to
GDB's "Internal error: pc in read in psymtab, but not in symtab"

Task-number: QTCREATORBUG-11164

Change-Id: If79d586b59e2c1ee37558e8a811091fefc69ac2d
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-04-03 13:41:21 +02:00
hjk
18b91ae4ec Debugger: Move putPlainChildren() to Dumper base
It's reusable...

Change-Id: I1a0f40b9b3bbecf99024d3a2fd5148baf604109b
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-04-02 11:03:43 +02:00
hjk
50459e5713 Debugger: Use target not host architecture in QDateTime dumper
Task-number: QTCREATORBUG-11164

Change-Id: I83bd56f91c1e5342e1a755638c794dde7f5b345a
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-04-02 11:00:22 +02:00
hjk
f92e04374a Debugger: Speed up Qt namespace detection in non-Qt projects
Task-number: QTCREATORBUG-10610
Change-Id: Idc5a93625fa4a148864709a1cefbcbbab877a8a2
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-03-27 16:53:11 +01:00
Orgad Shaneh
311868a696 Debugger: Support p1 on Windows
Change-Id: Id634dc37b2708f9cb88e5b01ff758d5adcde215e
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-26 15:15:57 +01:00
hjk
5d1bc3859d Debugger: Add simple QV4::String dumper
Change-Id: Ide277128d30c4dcc5c396441ebd6e40aa3fc8b51
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-03-18 10:32:31 +01:00
hjk
af43f684bd Debugger: Consolidate metaObject recognition
Same code can be used for LLDB and GDB...

Change-Id: I07aae10fec28f01425cc13285504f57aef3afd25
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-12 14:31:36 +01:00
hjk
8303f793ab Debugger: Force plain transport for non-ASCII char data
Task-number: QTCREATORBUG-11670
Change-Id: Iec5d3c7e73139414c51216ed6767c4524e859329
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2014-03-12 10:28:54 +01:00
hjk
b76fb6baba Debugger: Comment out unused threadname code
This should be re-vived at some time for MinGW, until then making
clear that it is not used does not hurt.

Change-Id: I365c9fb1f859223da2f96b72a33419313438d83b
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2014-03-11 14:44:25 +01:00
Christian Stenger
660014f098 Debugger: Fix typo
Change-Id: Iba23331b4a6a17c690a6c630e1fbb29d530cfb30
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-11 13:21:47 +01:00
Christian Stenger
f8afa89ba7 Tests: Fix QThread dumper for old gdb (~7.4)
Change-Id: Ifbaf8f326744e9e271b407d8650ffcc47b890889
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-10 17:57:09 +01:00
Orgad Shaneh
5bb72be900 Debugger: Print traceback on dumper exception
Change-Id: I652d31b111eab464bf3301968fe273d24f0dad11
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-10 10:05:02 +01:00
hjk
3a988262de Debugger: Speed up Qt version extraction
Change-Id: I20494f4cae410d430049b3a5e4ce397ac3917ddb
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-07 18:56:21 +01:00
hjk
dbc474ef71 Debugger: Speed up Qt namespace extraction with GDB
Change-Id: Ic2a1296828d5aceb6c0aae0edbd165e3d0e86741
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-07 17:59:18 +01:00
hjk
6975be4f54 Debugger: Don't memoize guessed Qt versions too quickly
There might be better data after more shared objects are loaded.

Change-Id: Ib81226b4cafe0d067d62087e320413f8d070bee8
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-07 14:24:49 +01:00