Commit Graph

59 Commits

Author SHA1 Message Date
hjk
2cfa3502c3 Debugger: Remove identical CDB implementation of loadDumpers
Change-Id: I83582821f0670f65c8f325c54707947741a3df17
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-02-26 13:54:53 +00:00
David Schulz
11863cb517 Debugger: add cdb specific symbolAddress
Fixes: QTCREATORBUG-21864
Change-Id: I54d89fabd83dd06e5d733519f0b65416077323c9
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-01-28 09:25:20 +00:00
David Schulz
18bee3a08f Debuger: Fix enum dumper (again)
Fixes: QTCREATORBUG-21726
Change-Id: I25f4a84d88a915247456ac8e12877d503ae0d49a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-12-17 12:55:18 +00:00
David Schulz
12f4ff5e5b Debugger: Fix Qt version detection in the cdbbridge
broken by b2052561cc

Fixes: QTCREATORBUG-21446
Change-Id: I303bb943a3b39703a6c5898aab99b89d35d1d2d7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-11-12 14:09:52 +00:00
Alexandru Croitor
89fe2681f7 [Debugger] Add dumpers for Python "PyObject"s
The dumper calls PyObject_Repr and shows the result of that as the
value of a PyObject.

It also adds three new sub fields to show the object class (type),
super class (base class), and the meta type (the type of the class
object).

Change-Id: I0612833321f6d2b50826588e775cfa12e1db28e4
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2018-10-19 11:17:36 +00:00
Christian Stenger
49a498c0a6 Debugger: Fix accessing member function
Amends 975f5886a6.

Change-Id: I0e8f5a9ab0ccf76fc095e0e05bfbdb838a7583d3
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-08-09 12:56:26 +00:00
David Schulz
975f5886a6 Debugger: fix cdb enum dumper
Change-Id: Iac407d98afd8f024a45d0f6550c8b3c00df0a515
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2018-08-09 08:30:37 +00:00
hjk
a8a23110bf Debugger: Fix enum dumper
Make the hex display work with LLDB, fix GDB and LLDB test.

Change-Id: I529b5cdc908dbcba7270bc4574fa59a012fcacad
Reviewed-by: David Schulz <david.schulz@qt.io>
2018-03-22 08:45:57 +00:00
David Schulz
b2052561cc Debugger: improve evaluate expression with cdb
Replace Evaluate with AddSymbol and create a PyValue representing
that expression

Change-Id: Ibb8ab70c41df81e9d7d683b633a070caa03036d3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-12-20 09:32:18 +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
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
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
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
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
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
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
David Schulz
9c2e45aa3c Debugger: Use listTemplateParameters from DumperBase
This will utilize the lazy lookup of template parameter types.

Change-Id: Id91ccaba7911e8769f42ec0c65a60f93558be1a2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-02-23 08:40:26 +00:00
David Schulz
bb76740691 Debugger: Use GetOffsetByName for staticMetaObject lookup
Halves the lookup time compared to parse and evaluate.

Change-Id: I8beda23f444c73816a93e38154d2ca502b701fe8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-02-02 13:06:52 +00:00
David Schulz
1b5d8a84f8 Debugger: Let the python bridge handle reference types
Create pointer and array types in the python code. Uses
the type cache which leads to less type lookup calls.

Change-Id: I970bbb04da2e8051ed66b4b12dfb62076d7f214d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-02-02 13:06:44 +00:00
David Schulz
fcdcc4c7f8 Debugger: Add Core::Id python dumper for cdb
Change-Id: Id89f730e90586659ce76e685c014655178957222
Reviewed-by: hjk <hjk@qt.io>
2017-02-01 12:22:08 +00:00
David Schulz
663631f35c Debugger: Replace common qint typedefs before type lookup
Change-Id: Ieba28bab3c603d06caf9abb287189bf87f6dabb0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-30 08:30:41 +00:00
David Schulz
313cc9bc85 Debugger: Detect QObject based on customEvent for cdb
Change-Id: Idce6d8e8bc4d913226709a30e3dffd901e9cc2b4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-26 11:23:32 +00:00
David Schulz
10df40ca5e Debugger: Extract virtual function table dumper
Change-Id: I729186d36200967d6ca229e639ceb864f69240f7
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-26 11:22:34 +00:00
David Schulz
58e7554f3d Debugger: Cache qtNamespace also if qstrdup wasn't resolved
Otherwise it will be looked up for every value in a none Qt build.

Change-Id: Id5d82333b6fb93242d06c5d7e9fdf8ffa2ce6b38
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-19 10:03:34 +00:00
David Schulz
046e6309d3 Debugger: Add support for none standard Qt builds
... to the python based cdb dumper.
Now supporting static, namespace and qt builds with a libinfix.

Change-Id: Ib6bcd00dba876adc7a56c23ec4f4280cd3208143
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-17 11:59:36 +00:00
David Schulz
cb2021d630 Debugger: Call qVersion() for pre qtHookData Qt versions
Change-Id: Id37f4c31b776ea5af960011e7485b11c1a51c8d3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-17 11:59:27 +00:00
David Schulz
9ef6cb1a34 Debugger: Generate cdb comprehensible qtDeclarativeHookData symbol name
Change-Id: Ibbdd6204b3a8806057fc16de18462c96840e340c
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-12 09:07:11 +00:00
David Schulz
0279e1c3a6 Debugger: Add guard to fromNativeValue
Change-Id: I733ad57e562034d7056aa13402cd000a7a1ae8b9
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-12 09:06:56 +00:00
David Schulz
ccd84c62be Debugger: Add basic benchmarking infrastructure
Change-Id: Ib685be2ec7c39527748c2feb2ec7cc1dcd01ac37
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-05 11:41:26 +00:00
David Schulz
2e90a02a52 Debugger: simplify locals loop
The value name is already set in fromNativeValue

Change-Id: I82cdaa33133cde431d23a0f20bd5c3d6d938cf7f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-05 11:41:23 +00:00
David Schulz
c9003ef265 Debugger: Cache pointer size in cdbbridge
Change-Id: Idf404a10f2a9cc3eff033123829ac5b564d7e172
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-04 11:58:55 +00:00
David Schulz
274ed92372 Debugger: Use qtHookData to get qtversion in cdbbridge
Change-Id: I243b6f69e52286c1c64f0c02350d3e4d4cfd6c69
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-04 09:06:22 +00:00
David Schulz
4571e0caec Debugger: Generate qtHookData symbol name based on module
Change-Id: I322cac9376b1789d87d3c704b4f1f89a0a892dbc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2017-01-04 09:06:16 +00:00
David Schulz
c2b89ae3b2 Debugger: Workaround missing bitfield cdb api
Change-Id: Ifb34a3e8adaf11c5c82ea822a9a332ca7fb1f15e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-19 12:41:00 +00:00
David Schulz
16b44c80f6 Debugger: Update subtree if partial variable is requested
Instead of dumping the complete locals just dump the subtree
with the partial variable.

Change-Id: Ieac5f62efd87144bbea7a6a559d8be8d48d9084e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-13 09:58:52 +00:00
David Schulz
19a6979acd Debugger: Remove unused nativeValue property
Change-Id: I6c36db6fe14e859b0686ae93a0214e0051b5af39
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-13 09:22:25 +00:00
David Schulz
cc765e9fad Debugger: Raise exception for invalid memory
The api doesn't expect empty arrays and doesn't validate indices
before accessing them.

Change-Id: I6d6fde9eec6d65d5db351be821fed892a77fabc1
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-25 12:04:52 +00:00
David Schulz
1df8f19257 Debugger: Create reference types for arrays and pointers
Directly looking up array and pointer types is more
likely to fail than looking up the target type.

Change-Id: Icea8320e2eedd34f6d81692c5eacf50f644100bc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-24 05:44:40 +00:00
David Schulz
b04602396b Debugger: Detect base classes in cdbbridge
Change-Id: I6a422bd70e6a28acd390ec9d01a14331b41168c0
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-21 12:47:22 +00:00
David Schulz
eabccbdcb2 Debugger: Don't encapsulate integer in values for template args
Change-Id: Ib1bb2b01ff8eb1ed11c0f5785f3b4bb5f50c411a
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 06:16:04 +00:00
David Schulz
8736565c14 Debugger: Adjust to latest field changes
Change-Id: Ic4b3c8f0670a0d58e3d762ff0765862709901d2a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-07 09:57:05 +00:00
David Schulz
bf133156ee Debugger: Replace the native void type with a fake void type
The native void type returns errors when accessing for example size
or name.

Change-Id: Ia5826ff4894eb7205d37a15661b82d9410171413
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-07 09:57:00 +00:00
David Schulz
bf982fdfb9 Debugger: Set size of void to pointer size
The previously defined size of zero resulted in a number
of division by zero exceptions.

Change-Id: I3faed573bb15b9b9fd825281b8f9b0c15a02a7de
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-07 09:56:57 +00:00
David Schulz
4411f91139 Debugger: Set value name in cdbbridge
Change-Id: Ida4068d86b4a0785fcd848cdc4957dcf3a328135
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-07 08:42:02 +00:00
David Schulz
0d2957c50a Debugger: Adding function returning the qtHookData symbol name
Change-Id: I2749b6823a8a9da4a343b0fdb112df893e935eb3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-02 09:56:10 +00:00