Commit Graph

976 Commits

Author SHA1 Message Date
hjk
8cb944f4ff Debugger: Display summaries for CoreFoundation types
Uses lldb's GetSummary() method to display values for CoreFoundation
string-like variables.

Task-number: QTCREATORBUG-18638
Change-Id: Icca6d9cf7b328c80b44eebe597259f38aba1c3ef
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2017-08-21 10:35:06 +00:00
Eike Ziller
a0a42ff7bd Merge remote-tracking branch 'origin/4.4'
Conflicts:
	src/plugins/debugger/gdb/gdbengine.cpp

Change-Id: I8a7c8ca07d6d6005f5d39b8f1477ebbc7a299fbf
2017-08-17 17:29:25 +02:00
Leena Miettinen
a951448c4d Doc: Add step list for adding custom debugging helpers
Change-Id: I01aba948b9dfd55a58cae5fdd51e1588bb675e6a
Task-number: QTCREATORBUG-18740
Reviewed-by: hjk <hjk@qt.io>
2017-08-17 12:43:16 +00:00
hjk
a0c26a9279 Debugger: Adjust a comment on the used of dumpers for CDB
Change-Id: Iac11c9f9415de3c8128f271fdbefdf78877d2755
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
2017-08-16 09:04:45 +00:00
hjk
609b4170f3 Debugger: Show guts of QString::Data when requested
If people already decide to drill into QString they are likely
to want to be able to drill into QString::Data, too.

Change-Id: I90cf1bd9b7bed66805fc7493cf1595d27ef3b129
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2017-08-15 13:38:03 +00:00
hjk
90de4bae40 Debugger: Hex-encode LLDB disassembler source lines for transport
Unescaped quotes break the protocol.

Task-number: QTCREATORBUG-18721
Change-Id: I235c4dc33e599769bc854423ef4a7dc6f46bf58e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2017-08-15 08:44:27 +00:00
Eike Ziller
d8fd5292f1 Merge remote-tracking branch 'origin/4.4'
Conflicts:
	src/tools/clangbackend/ipcsource/clangiasyncjob.cpp
	src/tools/clangbackend/ipcsource/clangjobrequest.cpp
	src/tools/clangbackend/ipcsource/clangjobrequest.h

Change-Id: Ib8602530663813ade418f995dfd2a736908cfe75
2017-08-15 10:07:51 +02:00
hjk
e5631e2ebe Debugger: Fix location marker update for LLDB Jump to Line
Change-Id: I93c46eabb8c91c3e7158454f04cf027d55ece621
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
2017-08-14 12:48:32 +00:00
hjk
6ae77f7daa Debugger: Fix editing of std::{w,}string, QString, QByteArray
... as well as std::vector and QVector

Change-Id: I7fd33be9917a17414149813c28316166b8de9be7
Task-number: QTCREATORBUG-18681
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-08-09 05:34:11 +00:00
hjk
376b1f32dc Debugger: Make std::complex values expandable
Change-Id: Idecd15378cfe2a0026ad5b9317ee7ad791a5ff47
Task-number: QTCREATORBUG-18680
Reviewed-by: André Hartmann <aha_1980@gmx.de>
2017-08-08 09:17:02 +00:00
Eike Ziller
1feb5c604d Merge remote-tracking branch 'origin/4.4'
Change-Id: I02e54f45d233b89ddaee9c87da9b9af2a56374b8
2017-07-21 10:08:05 +02:00
hjk
1d682f2144 Debugger: Don't hard-fail on missing Python json module
Only needed for native combined debugging.

Task-number: QTCREATORBUG-18577
Change-Id: I7c5d877b9601e77ab8de251305db829a07675f8d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-07-20 11:23:32 +00:00
Thiago Macieira
d6b6a88753 Debugger: print QFlags and bitfields as hex
It's a lot more useful to see in Qt Creator:
  QAbstractFileEngine::FlagsMask (0xff00000)

Than
  QAbstractFileEngine::FlagsMask (267386880)

Change-Id: I8d96dea9955d4c749b99fffd14cd690574b433e5
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-07-11 23:57:19 +00:00
Christian Stenger
2cacf24b18 Dumper: Fix exception when accessing empty items
This also fixes accessing 'this' when located inside a
different thread.

Task-number: QTCREATORBUG-18466
Change-Id: Ib90cc23c65c033a234d3f7cf9b1ba76abff719e2
Reviewed-by: hjk <hjk@qt.io>
2017-07-07 09:38:10 +00:00
hjk
1a16caf221 Debugger: Don't list static members of items in arrays
To properly access a static member we need a nativeValue which we
don't have in the expansion of an array.

Not showing static members in that case is a compromise between
LLDB behavior (never show statics) and showing something wrong
(see the linked bug report)

Task-number: QTCREATORBUG-18366
Change-Id: I688779224a89d4ecbc47dd5623922efb32be9c4c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-07-05 08:17:42 +00:00
Orgad Shaneh
25f5710df2 Dumper: Use correct integer value for enums
In case of an enum bitfield

Change-Id: I1e7756d5dffb4d81030795c495f2474a77c50452
Reviewed-by: hjk <hjk@qt.io>
2017-06-20 16:26:57 +00:00
Orgad Shaneh
687466ac47 Merge remote-tracking branch 'origin/4.3'
Change-Id: I126f3a05212a3d5df78812e66285bc9e8078360b
2017-06-20 11:32:02 +03:00
hjk
b129cebccc Debugger: Fix manual splitting of complex template parameter types
Parsing has to stop at the first < (coming from the end).
foo::span<int>::bar<double> has a parameter 'double', not 'intdouble'.

Change-Id: Ied142d5e75a7587d6c0efd3b51608b199b999e93
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2017-06-19 09:24:38 +00:00
hjk
a25f394f68 Debugger: Add dumper for std::{optional,byte} and gsl::{span,byte}
Change-Id: I7e06214bfd2ace91f480b73bb370e5dc6297c502
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2017-06-16 15:31:31 +00:00
Orgad Shaneh
325eaf4a62 Fix internal C++ code model dumpers
Change-Id: I8a6f9b5e5abb27c9a96bf573f517aff26f9f2b38
Reviewed-by: hjk <hjk@qt.io>
2017-06-13 05:54:50 +00:00
Orgad Shaneh
3eb36b556f Dumper: Add bitfield value in debugging message
Change-Id: I353e85b5b6999f85e93eed18ac0cf414c1c46066
Reviewed-by: hjk <hjk@qt.io>
2017-06-13 05:53:27 +00:00
Orgad Shaneh
a9145e67ba Debugger: Prettify values for enum bitfields
Change-Id: I55329bba1864c9ebbbcb3b3bf1b940346507f8cd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-06-12 10:40:46 +00:00
Orgad Shaneh
6b0e1bc5f8 Merge remote-tracking branch 'origin/4.3' into master
Change-Id: I83af635dcac98e4fd78b21d8dd9dc3a27a4fdf94
2017-06-12 10:01:16 +03:00
Orgad Shaneh
d7d415491a Dumper: Fix type of lvalue for bitfields on GDB
Change-Id: Ic0e82fc012eb1277a74ff2e63fdc0a13caaf5f1c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-06-07 07:37:47 +00:00
Orgad Shaneh
e9491870bd Dumper: Do not use None for bitpos
It causes an exception when being divided

Noticed with boost::icl::interval_set.

Change-Id: I5629436c3c1ba10e7b67bb05d720329f4c61eafe
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-06-06 07:13:05 +00:00
Orgad Shaneh
89057b552b Merge remote-tracking branch 'origin/4.3'
Change-Id: I56004e3ec9dc9d92d33bdae438c4f7e069eccc45
2017-06-02 15:13:51 +03:00
hjk
7a18978eda Debugger: Add a simple dumper for Utils::Port
Change-Id: I7ea02e052a4a3a8244d6533ef0502db88974abb7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-31 12:41:30 +00:00
Orgad Shaneh
adc60b7b17 Dumper: Remove duplicate function in lldbbridge
Change-Id: I0f63ebcc21a5eded26cb01eef8a9c4f2bd96f64c
Reviewed-by: hjk <hjk@qt.io>
2017-05-30 10:51:14 +00:00
Orgad Shaneh
8204014007 Debugger: Fix unnamed typedef resolution
typedef enum { Value } Unnamed;
struct Foo { Unnamed u; };

int main()
{
    Foo foo;
    return 0; // Expand foo -> not accessible
}

Change-Id: I4231314ef92bb1896d287ae5eb3200d4d53cf4db
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-30 05:48:48 +00:00
Orgad Shaneh
37b415379d Dumper: Introduce Value.__sub__
Change-Id: I27bf57e614630ac7b5bedb7f07e487676443f513
Reviewed-by: hjk <hjk@qt.io>
2017-05-29 10:37:37 +00:00
Orgad Shaneh
8430da3bf7 Merge remote-tracking branch 'origin/4.3' into master
Change-Id: I01ab8c85ea3372b6dce4142ddb9cf92d903ffca6
2017-05-23 23:41:40 +03:00
Tor Arne Vestbø
9b3ad89dcd Make Qt python pretty printers available inside LLDB/Xcode
The LLBD bridge can be imported from the users's ~/.lldbinit:

    command script import "<path to lldbbridge.py>"

Or by relying on a (future) debug script in the QtCore dSYM bundle.

Change-Id: Ia099dcebc6375d38ae2d75c939bb5669e30e4b2c
Reviewed-by: hjk <hjk@qt.io>
2017-05-19 14:03:46 +00:00
Tor Arne Vestbø
4eac9533e1 Make sure lldbbridge.fromNativeValue always sets value name
Change-Id: I40296843bcbc504d6271a1f30ac4f8c4a1a2fe85
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-18 09:33:54 +00:00
hjk
d728317c87 Debugger: Add a dumper for QProcEnvKey
Makes spotting variables in the process environment easier.

Change-Id: I5841cf299840082ff62d96bcb57386a0352ee08d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-16 14:17:33 +00:00
Tor Arne Vestbø
5bc796094a Allow custom handling of python Dumper warnings/exceptions
Change-Id: I04108a09c317675d597bb6d0d58331c70ce02fb9
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-16 12:38:16 +00:00
hjk
99ac955664 Debugger: Fix display of pointers as arrays
Task-number: QTCREATORBUG-18204
Task-number: QTCREATORBUG-17803
Change-Id: I4efe359c206b53ef773127cf29107d3cce720819
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-16 11:55:58 +00:00
Eike Ziller
64b19af7dd Merge remote-tracking branch 'origin/4.3'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri

Change-Id: I6d89ea588de955f5d878500b59285d3adde6c77d
2017-05-15 15:31:55 +02:00
Orgad Shaneh
f603a115d0 Dumper: Put object address for pointer also when it is not dereferenced
int main()
{
    int foo = 42;
    void *bar = &foo; // bar has no object address
    return 0;
}

Change-Id: I917c2976bd618c096bfd704abff8b3538e38a0d3
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-12 08:04:21 +00:00
Eike Ziller
6e8ee7479e Merge remote-tracking branch 'origin/4.3'
Conflicts:
	src/plugins/debugger/cdb/cdbengine.cpp

Change-Id: Ib9aeccc4162c43e9ee3d85847d96678045625dd0
2017-05-09 15:07:30 +02:00
Orgad Shaneh
11dd4ab75c Debugger: Fix swapped object/original addresses
Task-number: QTCREATORBUG-17938
Change-Id: I71773893c2dde784c5d3f4c63e7efbbdad13916c
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-09 08:28:12 +00:00
Orgad Shaneh
279192f17a Dumpers: Fix operator + for pointers
Add an extensive unit test to prevent future regression.

Change-Id: I38b74f9b4f5893285e9afff2ddecaaad106f4114
Reviewed-by: hjk <hjk@qt.io>
2017-05-08 06:58:48 +00:00
Eike Ziller
105b69836c Merge remote-tracking branch 'origin/4.3'
Conflicts:
	tests/auto/debugger/tst_dumpers.cpp

Change-Id: Id8b53b000f94a1b5ab923db79f67bad3276d09dc
2017-05-04 10:03:50 +02:00
hjk
1e9cc97220 Debugger: Improve handling of static members in shared objects
Change-Id: I4978094dc5dcd0e57bb6790cfc8476a9db77724d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-05-02 10:22:14 +00:00
hjk
f38f120031 Debugger: Add a dumper for QLazilyAllocated
Task-number: QTCREATORBUG-18060
Change-Id: I5eec7bd10f54278a1d40cf9fce97fba56f4aa2e4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-26 10:51:39 +00:00
hjk
81d9315587 Debugger: Add a boost::variant dumper
This requires making template argument extraction a bit more robust

GCC 5.4.1 created debug info only reports the first argument for
boost::variant<int, bool>:

    #include <boost/variant/variant.hpp
    int main() { boost::variant<int, float> v = 1; return 0; }

    py print(gdb.parse_and_eval('v').type)

      -> boost::variant<int, float>

    py print(gdb.parse_and_eval('v').type.template_argument(0))

      -> int

    py print(gdb.parse_and_eval('v').type.template_argument(1))

       -> Traceback (most recent call last):
          File \"<string>\", line 1, in <module>
          RuntimeError: No argument 1 in template.
          Error while executing Python code.

Change-Id: Iedca8b073078c93449ab61bb2cab05d6cd9803ba
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-26 09:23:18 +00:00
hjk
c5d37af0e0 Debugger: Some support for 'long double'
Task-number: QTCREATORBUG-18023
Change-Id: I06783541668b95711cb5a45bf689c43b348ff624
Reviewed-by: hjk <hjk@qt.io>
2017-04-25 15:00:59 +00:00
hjk
5784a96596 Debugger: Extract printing of dereferenced pointers into method
It's used twice, always for 'this', and whenever asked for by the
user's 'Dereference Pointers Automatically' choice, but needs to
be done at different times.

Change-Id: I4dc7340d0a4cb3eb0c7ff17d59e39be0e3870aa0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-25 10:24:50 +00:00
hjk
758e50fa45 Debugger: Catch some exceptions related to optimized out values
These could be triggered by declared but undefined and unused
static data members.

Task-number: QTCREATORBUG-18030
Change-Id: I941e8cbe8ce18dca737e59472ed0ee19ace44072
Reviewed-by: David Schulz <david.schulz@qt.io>
2017-04-25 07:58:13 +00:00
hjk
53ff0e1ca1 Debugger: Add a workaround for bad gcc debug info generation
Gcc does not write out full type names with 'using template ...', see
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80466

This is in most cases harmless for Creator as dumpers are triggered
independently of template arguments. However, if the dumper takes
different code path based on the template argument type, as is
e.g. needed for std::vector<bool>, wrong results are produced,
as the type cache only used the template base name as type id.

Work around by mangling the id of the un-typedef-ed type into
the type id of a typedef, which, in case of templates contain
the full parameter list.

Change-Id: I63c59cccdc186b09ff780e9dfd57b0ad668ae98f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-20 09:15:59 +00:00
hjk
283bce7343 Debugger: Add a qfloat16 dumper
Change-Id: Ibc43da06c195d916296f09740a1111a2586443b8
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-04-19 06:01:18 +00:00