Commit Graph

1394 Commits

Author SHA1 Message Date
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
hjk
873559b9c9 Debugger: Check presence of current working directory explicitly
Change-Id: Iba6037907761702fa825764757dd00fce4a91082
Reviewed-by: Vadim Evard
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-10 10:25:10 +00:00
David Schulz
17485c0678 Debugger: Optimize python output handling
Change-Id: Ia97e8adaabbffe49acec44575621a4f4243c5cea
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-10 07:07:38 +00:00
David Schulz
c00bb1dcfb Debugger: Pass uninitialized variables to the python dumpers
Reduces accessing uninitialized memory

Change-Id: I025e9070b9b17a806237619b484cb27230e7f494
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-10 07:03:23 +00:00
hjk
79c3c4e5e5 Debugger: Remove unused Dumper.Type.field function
Change-Id: Ib7b1576d2b71b0e5f1648b51a4298b44581b1c2e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-04-05 05:45:31 +00:00
David Schulz
16b3235003 Debugger: Catch memory read exceptions in getJumpAddress
Throwing an exception in these cases is not uncommon and should
be handled properly.

Change-Id: I8d4377bf26a4e31971da724904dd5ea5f01a95e1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-04 08:23:30 +00:00
David Schulz
cafd4a4626 Debugger: Make readRawMemory exception more detailed
Change-Id: Ibb9b42b05921cf8f797da3d3e2967a8842bf38c0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-04-04 08:22:18 +00:00
David Schulz
4e4b5833da Debugger: Fix QFlags dumper for cdb
Also adding a test covering this dumper.

Change-Id: I491dd87e52f65bf3faf21d81436f264507bf0b51
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-30 13:37:53 +00:00
David Schulz
86edeb9722 Debugger: Use native value for pointer dereference
Change-Id: Ibde6ff382e7adc0c196837c9eba04391c0a2c3a0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-28 09:22:28 +00:00
David Schulz
767d988891 Debugger: Cache reference to an unresolvables type as struct
This fixes throwing an uncaught exception if local variables contain
arrays or pointer to a type that can not be looked up.

Change-Id: If9407e5cf5d86bb89594266d4122a53dd65a80bb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-27 13:19:13 +00:00
David Schulz
bb04bbe9d4 Debugger: Add dumper for Utf8String
Change-Id: I0f9411a246d121e22c8b65bf188598c427993726
Reviewed-by: hjk <hjk@qt.io>
2017-03-27 12:01:16 +00:00
David Schulz
c2f260ee2e Debugger: Add exceptions for array type names
Cdb also seems to return <gentype number> type names for
virtual function table types.

Change-Id: I0d9accb88222de599488fabdb69c7f1585216c8e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-22 14:03:55 +00:00
David Schulz
cf61ca4846 Debugger: Fix QHostAddress padding for MinGW
Change-Id: I97f52587767537a5730753b593bc024e270bbd5e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-22 14:03:41 +00:00
Orgad Shaneh
91e9ba7ede Dumper: Remove unused function
Change-Id: Ibc8cf420170b084c05fdaf1d6a7b26594bcb3f24
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-03-21 14:57:29 +00:00
David Schulz
f32b1d00f4 Debugger: Adjust offset for QFile dumper
Change-Id: I20704cdcdda1273cdc0df91bf963c979a1f51190
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-21 09:04:41 +00:00
David Schulz
33e8f2e099 Debugger: Fix QObject detection on Windows
Change-Id: I054161dfde0c03167a6d57861b069c403330e746
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-21 09:04:34 +00:00
Christian Stenger
2b6a912e6b Dumper: Comment out unused function
Change-Id: Iafc2b0892739c43699631f6ca8ce0d51222c893c
Reviewed-by: hjk <hjk@qt.io>
2017-03-16 14:58:58 +00:00
Christian Stenger
8204d794e2 Dumper: Fix missing import
Additonally ensure that code path works with Python 2.7+ and 3+.

Change-Id: I6c7895eeb830259dc07bb7f64049ae51cb814c7f
Reviewed-by: hjk <hjk@qt.io>
2017-03-16 14:57:43 +00:00
hjk
fd0bf9df64 Debugger: Make QObject connections a bit better accessible
Change-Id: I5e70a61db73f89dc48efc82bc6aa4e42c44ba6d5
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-16 10:12:40 +00:00
hjk
61501042bc Debugger: Simplify Qt namespace guessing code
We get proper notification when QtCore is loaded now, and we either
got it, or not.

Change-Id: I9485126d9b15b8d859ba440f3ba1623f03527ef8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-15 11:36:18 +00:00
hjk
68a4a3db94 Debugger: Use gdb provided hooks to track loaded shared objects
Change-Id: I4f3cce56910e0e737febaf0ff442956b78b19c30
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-15 11:34:58 +00:00
David Schulz
e41befd4f7 Debugger: Check also for Qt5Core(d).dll on Windows
Change-Id: Ic078a165d35c316cb12d08ca84913b4b07143aa4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2017-03-14 13:07:23 +00:00
hjk
fb213b5826 Debugger: Use a named tuple for Dumper.Field
Makes it clear that this is meant to be immutable and is supposedly
faster.

Task-number: QTCREATORBUG-17823
Change-Id: Ie5d67b793e0bc4f704981d5161efc12bcc22100a
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-09 08:20:46 +00:00
David Schulz
4f91cb3d0c Debugger: Do not lookup types when accessing the type name
Return the typeId instead of triggering a type lookup when accessing the
type name and no TypeData is available.

Change-Id: I4d46d5356d38184d73427e5a65c3986d30520cf9
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2017-03-08 09:52:30 +00:00
David Schulz
530f7972eb Debugger: Optimize QObject::staticMetaObject lookup
Change-Id: I8c06472ce4e33b7c4203934d93b9cc8c8ae95ce2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-07 09:46:23 +00:00
David Schulz
51d14393c4 Debugger: Fix double and (unsigned) long long alignment
Change-Id: Ia1ee70a047b3e659730e5a19b874f1f2e567d8ed
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-03 12:57:28 +00:00
David Schulz
2cd8378148 Debugger: Adjust offset in QGraphicsPolygonItem dumper
...for windows targets.

Change-Id: Ib3068f470c16141fa1bbd0455aa3805aa084fe65
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-03 07:57:06 +00:00
David Schulz
37dea3d7a6 Debugger: Fallback to read raw memory
...if native debugger value for an integral typed value can not be
interpreted as an integer.

Change-Id: Ic9753dd56f5d1854dc0765d5de2a0258a38615d8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-03 07:56:47 +00:00
David Schulz
aafb17ae83 Debugger: Add enum value dumper to cdbbridge
Change-Id: I40f1556599be7581eeab0c75b034696ac22a7131
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-01 10:07:49 +00:00
David Schulz
edacb7d383 Debugger: Use symbol tag to determine type code
Change-Id: I49a2a0f3e1ff65accb0d2e04fbd9352ce3f63f2c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-01 10:07:43 +00:00
David Schulz
327341b917 Debugger: Check type cache before creating array/pointer type
Change-Id: I334c8d9a7ae365f28a8b070b0ccef943b5db3c59
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-03-01 10:07:36 +00:00
Eike Ziller
1704c484a8 Merge remote-tracking branch 'origin/4.2'
Change-Id: I9006dd493707ae626ae3502541599c8789e1aab0
2017-02-27 15:17:37 +01:00
Orgad Shaneh
919ba9a925 Dumper: QJsonValue of String has no children
Change-Id: Ic6731ca6e7fe45792688623bffbbe0d9005bd1a8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-02-24 07:41:19 +00:00