Commit Graph

933 Commits

Author SHA1 Message Date
hjk
2d5e6ef232 Debugger: Fix QObject parent pointer display
Change-Id: If8b6c7415d5cd6b8e5df6c2d760b015e3077c20f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-02 06:57:11 +00:00
hjk
aba0a6b9ce Debugger: Add dumper support for libc++'s std::weak_ptr
Change-Id: Ie9041f95159e85c81f108aeff1564be136e4b7ef
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-01 14:34:21 +00:00
hjk
a7fb4cd3ed Debugger: Make QStandardItem dumper work without debug info
Change-Id: Iccdc693616558d2d224c1145eee78f903792c4a6
Task-number: QTCREATORBUG-16908
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-01 14:30:37 +00:00
Christian Stenger
681efe2324 Dumper: Fix std::once_flag dumper when using libc++
Change-Id: I5f320153f6ace6aecfad12f6156bba700fe7ad85
Reviewed-by: hjk <hjk@qt.io>
2016-12-01 09:23:27 +00:00
hjk
c944d08702 Debugger: Make {boost,std}::shared_ptr display more compact
After debugging through a code base that makes extensive use
of shared pointers (LLDB...) I came to the conclusion that the
display of weak and strong counts is pretty much useless and
it would be better to avoid that level in the display.

Change-Id: Ie03b05fff4f7f5b7dced2e656b404e8e7938cc25
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-01 07:50:23 +00:00
hjk
53022f01fd Debugger: Add dumper for std::once_flag
Change-Id: I8b5166fc0e7d54676b84a1b0d45c6a2793c2a37c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-12-01 07:09:00 +00:00
Eike Ziller
e487b3bd55 Merge remote-tracking branch 'origin/4.2'
Change-Id: I575f1cf98f2a4740577cdd94da21687d3392cdb7
2016-11-30 15:09:11 +01:00
David Schulz
bae72fcc51 Debugger: Fix MSVC python dumper for std::vector
Change-Id: I843f6195a9d51066eae57b7d383a0450fe4c56a1
Reviewed-by: hjk <hjk@qt.io>
2016-11-30 13:41:12 +00:00
hjk
3193321532 Debugger: Add a dumper for std::weak_ptr
Change-Id: I253b6d8069ecf36618aa40038da6820f52eb38df
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-30 13:37:46 +00:00
hjk
328f0c32e6 Debugger: Always display bald pointers as dereferencable
The result might not make sense, but the user should
have the option to check for himself.

Change-Id: I1792452906a5a27fd57b8f531792e63ef63033c8
Reviewed-by: hjk <hjk@qt.io>
2016-11-29 14:29:42 +00:00
David Schulz
f63c947289 Debugger: Fix MSVC python dumper for std::list
Change-Id: I3c32ba62107d54e0ab588b7a6cd068575c4e2873
Reviewed-by: hjk <hjk@qt.io>
2016-11-29 10:54:00 +00:00
Orgad Shaneh
7b3642cce4 Merge remote-tracking branch 'origin/4.2'
Change-Id: I259a402bc896fc2e359cc96b7510453ac9a9a552
2016-11-28 15:27:51 +02: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
hjk
eefe4fb7f7 Debugger: Add a dumper test for shared_ptr<ThingWithVTable>
... and fix lldbbridge to pass it.

Change-Id: I2c20cfafe5d7695d4359521cbfcbdc235dacbc82
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-25 11:57:24 +00:00
hjk
b18ac1faec Debugger: Make QStandardItem test pass without debuginfo
Change-Id: I9afbe8c76b6ff0797859f72741941a9ed34e57a1
Reviewed-by: hjk <hjk@qt.io>
2016-11-24 16:24:30 +00:00
Christian Kandeler
00f9ee1a3e Debugger: Better fix to extract Qt namespace with GDB
Done-with: Christian Kandeler
Change-Id: Idf34bee297677e837085d55297a0d6e6341dd2c7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2016-11-24 16:21:21 +00:00
hjk
a225158c24 Debugger: Simplify dumping of paired items
Change-Id: I191801489d88c6abd15c6f3cd1cc6df97c8668d6
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-24 15:12:14 +00:00
hjk
9d7a1fcb0f Debugger: Add a QStandardItem dumper
Change-Id: I503b17e1f36158a774dcf096b19ba628f0cc0205
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-24 09:51:40 +00:00
David Schulz
75303523ef Debugger: Fix std::deque python dumper for msvc
Change-Id: Iffbc3dffef6a3dc941fde024eac1e5e690ddb1c8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-24 08:46: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
hjk
e9f0f37070 Debugger: Robustify QRegExp dumper
The capturesTexts cache may or may not be warm, and
we may or may not be able to warm it. Make the dumper
work in as much cases as possible.

Change-Id: I9d9e0ec0c6a1bcf7288352c2834fedd42071d068
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-23 11:23:04 +00:00
David Schulz
c8bb93de6b Debugger: Do not print warning for auto padding
Change-Id: I5fc1cf185fdf9d3928a68e952aeb9fd39fe87c8a
Reviewed-by: hjk <hjk@qt.io>
2016-11-23 08:26:21 +00:00
hjk
286f089e55 Debugger: Fake contents of empty base classes with LLDB
A truly empty base wouldn't need content, but LLDB 3.8 reports declared
but not defined undistinguishable from empty bases. At least for the
common case of a single inheritance class we can continue dumping by
fake base class contents by fake the contents by using the whole derived
object's data.

Change-Id: I82d595b985ec1289d8abce5fccd217057d2d2d44
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-21 13:34:03 +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
Orgad Shaneh
6d1d1a4416 Merge remote-tracking branch 'origin/4.2'
Change-Id: I957c22020fbacb2f631220b0cdc7fa16a782798b
2016-11-21 10:25:45 +02:00
hjk
fa5cd03c11 Debugger: Add libc++ std::{deque,stack} dumpers
Change-Id: Ibf95c76b89fb7673241e680c233c7514c667f261
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 16:27:07 +00:00
hjk
96b907a1e8 Debugger: Fix QFiniteStack dumper and add missing auto test
Change-Id: If5f242f8d5184a0f2c62f6211f2ba89cda0cac07
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 13:32:05 +00:00
hjk
5b43ff7ad9 Debugger: Make QV4 dumper test pass with Qt 5.8.0
The layout of a QV4Value has changed in Qt Declarative change 2afb54fb.

Change-Id: Iab618cc128be242c786b9a7460e80e8e49ee6544
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 13:31:26 +00:00
hjk
3c3bccf0fb Debugger: Also support boost 1.55 unordered_maps
Change-Id: Id9ac4ecc8c61d4224f5840df2ec0a75c3c305825
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 12:11:56 +00:00
David Schulz
f8c86fd95f Debugger: Detect msvc virtual function pointer table
Change-Id: I51d82b692638932e35f22a5bb9286eecad577ed7
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 11:41:36 +00:00
hjk
c9067ff28c Debugger: Fix boost::unordered_set dumper for older boost versions
Somewhere between 1.48 and 1.58 structure layout changed.

Change-Id: Id8bcb473f364537342261dd2596f9f1bdacb5c79
Reviewed-by: hjk <hjk@qt.io>
2016-11-18 08:21:05 +00:00
hjk
952c3e3b64 Debugger: Remove some of the inferior call in QVariant dumper
Change-Id: I1f1ac5c5ba59c36d3c3d6546b24a93d1b647f88a
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-11-18 08:02:35 +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
hjk
572ba812d2 Debugger: Fix over-quoting in LLDB breakpoint reporting
The 'output' bit is inserted at report time, not at callback
script generation time.

Change-Id: Ibb5c9b09d8391d1be86b8f110e32ab1c90f6bab2
Reviewed-by: David Schulz <david.schulz@qt.io>
2016-11-17 14:47:16 +00:00
hjk
0334438b40 Debugger: Use more direct access in std::deque dumper
This effectively fixes the LLDB dumper for std::deque and std::stack by
avoiding a code path in which LLDB returns wrong data (the type and
offset for the _Deque_iterator::_M_first member - surprisingly the
other three members there get reported correctly).

Change-Id: Iae1ba8b81987442ed2d486b383a145a77ce49cd7
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2016-11-17 11:07:18 +00:00
hjk
84417cc122 Debugger: Use more direct access to QFile object guts
This still does not solve the QFile dumper test fail with LLDB/Linux,
but its one obstactle less. The remaining one is LLDB not reporting
the QFile base object size at all.

Change-Id: I3144cf9469c4456d21b8c220c9df1cd890348491
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 15:12:13 +00:00
Eike Ziller
4026864f38 Merge remote-tracking branch 'origin/4.2'
Conflicts:
	src/plugins/clangrefactoring/refactoringengine.cpp
	src/tools/clangrefactoringbackend/source/symbolfinder.cpp

Change-Id: I7c1c87f3b8ade43a07f6668565501042e967fa8b
2016-11-16 16:04:59 +01:00
hjk
82818cb90b Debugger: Improve QAtomicPointer dumper
More compact display and arbitrary inner types.

Change-Id: I68bc1f5cc88f51e993e6e8a91556d9d745a2574a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 13:34:04 +00:00
hjk
d7408f1fa8 Debugger: Make std::set::iterator dumper test pass for libc++
Change-Id: Ib5f9a0d71c130dcbcc14719b85f13582bbeaf74e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 10:05:17 +00:00
hjk
f42d44a481 Debugger: Recognize '-' as start of numeric template argument
Change-Id: Ibc0fd730655378dca3dc231dbad36981364ccf70
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 09:38:59 +00:00
hjk
b26400e8ef Debugger: Workaround gdb.lookup_symbol ignoring QArrayData::shared_null
There have been cases observed where 'p QArrayData::shared_null' finds
valid symbols that are not found using gdb.lookup_symbols. The cause
for that is unknown.

Apply an expensive workaround by checking for (the equivalent of)
a working 'p QArrayData::shared_null' but execute it only when
a libQt5Core was found. This keeps the overhead for non-Qt setups
at a bearable (unsuccessful) iteration over known shared object
names.

Change-Id: Id398673b938d3c3a72c24317abdbefbe793e54df
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 09:32:42 +00:00
hjk
88ff6cd5ae Debugger: Use a more direct way to detect LLDB bitfields
It has a function directly doing that, use it instead of
guessing (badly, in some cases)

Change-Id: I1ce317c28d60f820f8e868e3c0c5a665f8de6cb7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 08:38:35 +00:00
hjk
5b058ebb34 Debugger: Make QRegExp dumper test pass on Mac
We need DYLD_IMAGE_SUFFIX=_debug for the captures()
cache warming call to succeed even if the actual access
is by offset only.

Change-Id: I24a90b4c4187459904f14a664b992a5bba9a20eb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-16 08:37:18 +00:00
hjk
7e904c4d74 Debugger: Use explicit sizes in SSE dumpers
We know them, no need to guess.

Change-Id: I9788cfe178e4b013276f77df9aef5f4254818007
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-15 08:25:48 +00:00
hjk
e4e1bdb27a Debugger: Robustify typedef member lookup
Some code path did not resolve typedefs when looking up
struct members by name, making e.g. the BoostList dumper
fail for LLDB.

Change-Id: I7adf235cff3941574cab9f03d6f15ec5f3e2f0bd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-14 12:37:31 +00:00
Orgad Shaneh
9c09ca9e42 Merge remote-tracking branch 'origin/4.2'
Change-Id: Ia98031eb87f1859c3736faa0cdd8b655e8a50689
2016-11-14 11:17:13 +02:00
hjk
77fe2959ce Debugger: Fix a few return value types in putCallItem uses
Change-Id: If66fb7bf6726dd8ec3f630d11c004ac24fae4d06
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-14 07:37:09 +00:00
hjk
e94c87f1a7 Debugger: More quote cosmetics
That's a follow-up to 88e79e16a6a91

Change-Id: I19725bca1c547bd961094f2d00e85e170b2be33e
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-11-11 12:56:48 +00:00
hjk
8fce605913 Debugger: Display {un}signed char* similar char*
Task-number: QTCREATORBUG-17236
Change-Id: Ibbc58807572c6d1785f20948992f7a2c0dcc87f8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2016-11-11 09:07:41 +00:00
hjk
ae4d3c52e6 Debugger: Sanitize report of timings
Use Python's list and dict output directly, instead of
a manually stringified version thereof. Also, report
milliseconds instead of microseconds.

Change-Id: Ibcbdea732e7ecc58fd672bc5da794832215865b4
Reviewed-by: hjk <hjk@qt.io>
2016-11-10 20:14:25 +00:00