Commit Graph

111 Commits

Author SHA1 Message Date
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
hjk
b7ebfd274f Debugger: Move some common bridge code to dumper base
Change-Id: I9fd988c84bff5e02bc45478994f27a7bddb3358b
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-03-07 13:14:13 +01:00
hjk
9bb0d18872 Debugger: Fix some fallback in type lookup
Just in case. I can't trigger the codepath anymore.

Change-Id: Ia1cecca7a9628b36128fa6efbb2f6ffbc4bef4b2
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-28 17:15:37 +01:00
hjk
d190263e9a Debugger: Re-work qt namespace detection with gdb
We can always use python now. Avoids one roundtrip on startup,
a temporary file, and only does it when needed.

Change-Id: Id32a812bec477307da1d93950f7758f3a5699464
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-28 12:16:30 +01:00
hjk
762f3e32fd Debugger: Fix metaobject lookuop for older versions of GDB
Symbol.value is not available in 7.4

Change-Id: I86e00cbeef61669ca5950e35a7b0aed86dcb2f87
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-02-28 12:16:14 +01:00
hjk
9e3005ee95 Debugger: Rework gdb Q_OBJECT detection (again)
We need to filter out Q_GADGETS

Change-Id: Id0ec18188e5b40506d69908e7218e3971cbddad9
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-27 12:56:15 +01:00
hjk
4ee7bdc562 Debugger: Some cleanup in gdbbridge
Change-Id: Iecea0ee1d66cff3a4dbe2c9605babb2e49d0c93a
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-25 17:46:48 +01:00
hjk
7e5d67025c Debugger: Remove some workarounds for older GDB versions
... and the Python magic needed. This also helps to remove
module dependencies that break current QNX setups.

Change-Id: I6554cf0f344b4c3788681389f2c972e49c9851b6
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
Reviewed-by: Cristian Adam <cristian.adam@here.com>
Reviewed-by: Martin Boháček <mbohacek@blackberry.com>
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-02-21 13:33:21 +01:00
hjk
b9834e4092 Debugger: Move special argv display to DumperBase and use for LLDB, too
Change-Id: Ie1913f5a5062d230e02a4f1738ca14bd6cebc55c
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
2014-02-04 17:02:38 +01:00
hjk
b2874f3bb3 Debugger: Make some gdb dumper work for libc++
Better user experience on Mac.

Change-Id: Ice1455685e0e9bbe0d45cde20563929b7370695d
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-01-31 17:11:02 +01:00
hjk
d40ee224d4 Debugger: Handle extraction of data from temporary SBValue
Change-Id: I5d79b59e971933fef8ef94c20333035188d33a57
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-01-30 16:01:43 +01:00
hjk
c55ac5fb6f Debugger: Use more robust way to extract Qt version.
Also bump the fallback guess to Qt 5.3.

Change-Id: I8e9be14a34cdf6c6330de123cbed7243e0df968a
Reviewed-by: hjk <hjk121@nokiamail.com>
2014-01-30 13:08:58 +01:00