Commit Graph

1394 Commits

Author SHA1 Message Date
hjk
b4de69795f Debugger: Mark elision of long QUrls in Locals and Expressions
Fixes: QTCREATORBUG-25404
Change-Id: Ieee42f9239c9ffe88da03765678e1d2c4b6bb11d
Reviewed-by: David Schulz <david.schulz@qt.io>
(cherry picked from commit 6df27ccbe7)
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-03-03 08:25:25 +00:00
Christian Stenger
bf0154e50f LLDB: Do not print warnings to Locals
Change-Id: I552f75ebbb57c4af30582aa764fec75aa08df340
Reviewed-by: hjk <hjk@qt.io>
2021-03-01 15:13:00 +00:00
Christian Stenger
88ef74d0f9 LLDB: Fixup filtering out function signatures
Amends 2f67d75ca4.

Task-number: QTCREATORBUG-25185
Task-number: QTCREATORBUG-25217
Change-Id: Ic22d67d742273f9a8944c64df4c8a0647c4157f4
Reviewed-by: hjk <hjk@qt.io>
2021-03-01 15:12:54 +00:00
Eike Ziller
c55e59cb77 Merge remote-tracking branch 'origin/4.14'
Change-Id: Ib9512b4fc5e17b04ca4be79fc315e79a52d06497
2021-02-22 12:19:58 +01:00
Michael Weghorn
f4dc3fd5c5 Debugger: Prepend '*'s for autodereferenced pointers
If automatic dereferencing of pointers is enabled, the
"Value" and "Type" columns for pointers hold the values for
the dereferenced pointers.

In order to have a consistent behavior for the "Name" column
as well, prepend '*'s to indicate that the variable/expression
has actually been dereferenced.
Add parantheses around the original expression if it doesn't
match a simple regex for variable names, to avoid that the
leading '*' changes the meaning of the expression
(so e.g. a dereferenced 'somepointer + 1' is displayed
as  '*(somepointer + 1)' rather than '*somepointer + 1').

This introduces a new 'autoderefcount' field to propagate the
information how many levels of dereferencing have taken
place from the Python to the C++ side, which is then
used to add the leading '*'s for the display name.

Fixes: QTCREATORBUG-20907
Change-Id: Ia9a41cb42e25ba72a6d980a765dbe2b454deb8c8
Reviewed-by: hjk <hjk@qt.io>
2021-02-22 09:36:45 +00:00
Christian Stenger
2f67d75ca4 Debugger: Avoid looking up function signatures
Looking up function signatures ends up in massive
stderr output which blocks the debugger for ages, so omit
them as long we are not sure where they originate.

Task-number: QTCREATORBUG-25185
Task-number: QTCREATORBUG-25217
Change-Id: I9b022d2194a6cb61651ee0648be526fc94a02da9
Reviewed-by: hjk <hjk@qt.io>
2021-02-22 06:21:39 +00:00
Michael Weghorn
2d8dff4a8a Debugger: Avoid exception with GDB 10 to fix running dumper tests
Since GDB commit 1ba1ac88011703abcd0271e4f5d00927dc69a09a [1]
("gdb: Enable stdin on exception in execute_gdb_command",
committed 2020-01-24), stdin for GDB is re-enabled whenever
an exception is caught during 'gdb.execute()'.

When running the dumper tests for GDB, such an exception
was thrown when loading the qtcore library, resulting
in the GDB commands after the 'run' command (s.
'tst_Dumpers::dumper') to be be handled by GDB prematurely
when loading the library instead of when reaching the
end of the test program.

This resulted in the dumper tests failing with output like

    29: (gdb)
    29: &"up 0\n"
    29: &"No stack.\n"
    29: ^error,msg="No stack."
    29: (gdb)
    29: &"python theDumper.fetchVariables({'token':2,'fancy':1,'forcens':1,'autoderef':1,'dyntype':1,'passexceptions':1,'testing':1,'qobjectnames':1,'expanded':['local']})\n"
    29: &"Traceback (most recent call last):\n"
    29: &"  File \"<string>\", line 1, in <module>\n"
    29: &"  File \".../qt-creator/share/qtcreator/debugger/gdbbridge.py\", line 711, in fetchVariables\n"
    29: &"    variables = self.listLocals(partialName)\n"
    29: &"  File \".../qt-creator/share/qtcreator/debugger/gdbbridge.py\", line 597, in listLocals\n"
    29: &"    frame = gdb.selected_frame()\n"
    29: &"gdb.error: No frame is currently selected.\n"
    29: &"Error while executing Python code.\n"
    29: ^error,msg="Error while executing Python code."

Avoid the exception by first trying to 'gdb.execute' the
command that works for GDB 8+ and fall back to the command
for earlier GDB versions, i.e. reverse the order. That
should be fine for all GDB versions, given the commit
mentioned above is only contained from GDB 10 on.

While at it, move the assignment to 'cmd' into the
corresponding 'try' blocks to make the context a bit
clearer.

[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=1ba1ac88011703abcd0271e4f5d00927dc69a09a

Change-Id: I2d1bb52a777801e6bd77a5eda581a2fd5dd3a18f
Reviewed-by: hjk <hjk@qt.io>
2021-02-19 08:14:31 +00:00
hjk
977b999248 Debugger: Initialize DumperBase.output
This was used uninitialized in some put call from lldbridge's
disassembler.

Change-Id: I5a3ecf075dfd4a6c4e8a483f9f8172e295329ad0
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-02-02 14:07:01 +00:00
Mattias Johansson
2081038953 Add gdb tracepoint support for Linux
Change-Id: Id2e46bae576a730f8c1b64a247aeed12e6d721af
Reviewed-by: hjk <hjk@qt.io>
2021-02-02 07:36:07 +00:00
David Schulz
785932f0f1 Debugger: improve std::unordered_map dumper for cdb
and fix dumper tests

Change-Id: I1debd25a835aba28d77e5605dc49a5ea01221995
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-29 10:59:23 +00:00
hjk
3ffc7271e5 Debugger: Improve std::pair dumper display
And add a QPair dumper doing the same.

Task-number: QTCREATORBUG-25251
Change-Id: Iacff1889c08f7f60ec39d5d5b2b12439b8f8f5d7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-21 11:55:07 +00:00
hjk
c2e3e0419d Debugger: Prepare delayed type creation for DumperBase.Values
Change-Id: I283bcdec178e0a860bef71753cd29cc283a58391
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-21 11:21:01 +00:00
Eike Ziller
16d25a3cc8 Merge remote-tracking branch 'origin/4.14'
Conflicts:
	src/plugins/qmldesigner/assetexporterplugin/componentexporter.cpp

Change-Id: If742bcd843cf75cf55e07b489ecb7211f0cd9058
2021-01-18 11:50:32 +01:00
David Schulz
b7758eebb2 Dumper: Fix std dumper for release builds
for std::map, std::set and std::list

Fixes: QTCREATORBUG-24901
Change-Id: Ibfb196b17b7270729b052ed27dd51786cb2f8db8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-14 08:49:07 +00:00
David Schulz
6ae71652a5 Dumper: robustify msvc std vector/string dumpers
By looking for debug members instead of relying on a failing size check.

Task-number: QTCREATORBUG-24901
Change-Id: Ia79ba893243e864c7808e89ee7e29ba4b853f754
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2021-01-14 08:49:03 +00:00
Tim Jenssen
b801a9339d Merge remote-tracking branch 'origin/4.14'
Change-Id: I70504e096be620434f38cd990c593950da8b24ba
2021-01-07 14:23:46 +00:00
hjk
9f7af33404 Debugger: Clarify the the state of dumper use outside Creator
Task-number: QTCREATORBUG-25199
Change-Id: Ib993180a21b385c340f990298d0e9c521e18b767
Reviewed-by: André Hartmann <aha_1980@gmx.de>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-01-06 08:02:09 +00:00
Eike Ziller
45c2634166 Merge remote-tracking branch 'origin/4.14'
Change-Id: I62523c4733e617c46131048f5f62a2ca9be47d80
2021-01-06 08:42:15 +01:00
hjk
052b0b4c92 Debugger: Re-organize std::vector and std::deque dumpers
There are indications that the std::__1:: namespace cannot be relied
upon anymore.

Task-number: QTCREATORBUG-25061
Change-Id: I54d8d2fc757b1cfc9b27f00660f2814d745f2bc6
Reviewed-by: David Schulz <david.schulz@qt.io>
2021-01-04 10:06:55 +00:00
Eike Ziller
d95e1f940a Merge remote-tracking branch 'origin/4.14'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri

Change-Id: I5b8d93f2f08b62626c3f3447728c64d198b601ff
2021-01-04 09:09:21 +01:00
hjk
e09867d7de Debugger: Do not limit inferior output chunks to 1024 chars with LLDB
Task-number: QTCREATORBUG-24667
Change-Id: Ie59db04b0c1e46c4c06a1761eee3859ae18bcf7f
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: David M. Cotter <dave@kjams.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2021-01-04 06:49:48 +00:00
Eike Ziller
4bc2b4741d Merge remote-tracking branch 'origin/4.14'
Change-Id: I842a7c7358fd0ff6d85c151806e440043914e09a
2020-12-14 14:19:15 +01:00
David Schulz
1981d90f39 Dumper: fix QMetaObject detection for Qt6 on windows
introduced by 9b8493314dd77f3e96b353187816bb7ef4dedbb5 from qtbase

This change does not address all usages of super data in the dumper, but
enables dumping children.

Task-number: QTCREATORBUG-24098
Change-Id: I813dacfa719dd6ca367e305fadcc8f2b8ee45425
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-11 14:01:20 +00:00
hjk
b288cb6706 Debugger: Fix template type alias handling for LLDB
Case like 'template<typename T> using TVector = std::vector<T>'
end up only as 'TVector' in the debug info. This is unsuitable
as an id in our type info caching as this would only allow one
type layout for all specializations, which is not the case for
e.g. std::vector<bool>.

The solution is to mangle the target type into the id, as already
done for GDB.

This makes the Typedef2 dumper test pass.

Change-Id: I11538bbf6431f61a11c18366a2a2b4911cdc2e0e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-11 12:20:23 +00:00
hjk
d4ed07eb87 Debugger: Change/improve LLDB display of enums in some cases
This fixes the Internal2, EnumFlags and EnumInClass tests on Linux.

The values lose now the previously hand-crafted Class:: prefixes,
but the context is clear from the type column, and it's what LLDB
developers (and potentially users) consider normal.

Change-Id: I09e41f7b4fb4f078ef3f535fe650d06e7c2a0331
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2020-12-11 11:37:11 +00:00
hjk
b3ad621e0a Debugger: Fix Bitfield dumper for LLDB with Python 3
Strangely enough, this issue did not trigger with GDB for either
Python 3 or 2.

Change-Id: I0e5cf7ce0a8605f105bff549634aa014ef1f8403
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-11 09:45:42 +00:00
hjk
14035584d8 Debugger: Fix CharArray dumper and test for LLDB
Change-Id: If12936fa863633b1ca85e712f8395e8ab4a0d69c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-11 09:35:37 +00:00
Eike Ziller
1283b15117 Merge remote-tracking branch 'origin/4.14'
Conflicts:
	doc/qtdesignstudio/examples/loginui1/qtquickcontrols2.conf
	doc/qtdesignstudio/examples/loginui2/qtquickcontrols2.conf
	doc/qtdesignstudio/examples/loginui3/qtquickcontrols2.conf
	doc/qtdesignstudio/examples/loginui4/qtquickcontrols2.conf
	share/qtcreator/debugger/dumper.py
	share/qtcreator/debugger/qttypes.py

Change-Id: Id44a67cdeeb0889ff96eddcdf409d20ca7cbdd0b
2020-12-10 13:02:02 +01:00
hjk
8d6ca33a7a Debugger: Remove more dead code in dumpers
Change-Id: If0a48377470b75a2d9c5d7f3cb47a492b9214791
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-10 10:55:20 +00:00
hjk
e7e0fa5745 Debugger: Remove create{Container,List,Vector}Item
Not used anymore.

Change-Id: I1d534a094717cfc44aea73e6b4ca948c088480ae
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-10 10:55:11 +00:00
hjk
9c8c5b6363 Debugger: Strip inner typenames in pointer type lookup fallbacks
To compensate for a potential 'Foo*' vs 'Foo *' difference in
debug info.

Change-Id: I90e822f89bc13bdf7ffed30ee12a984a659aa38f
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-10 10:22:47 +00:00
Christian Stenger
9c8768e752 Dumper: Remove some fallback code
..and unused or unknown variables.

Change-Id: I13d1d03fa09ef3952fe2cb3f4b257fb2882709f2
Reviewed-by: hjk <hjk@qt.io>
2020-12-10 10:21:34 +00:00
hjk
eac85f8261 Debugger: Fix QObject property display with Qt 6
Task-number: QTCREATORBUG-24098
Change-Id: I6e1013fe39208ef6e9ba792e6b2fb745eb5e3108
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-10 09:59:58 +00:00
hjk
c902974423 Debugger: Simplify QObject parent dumping
Change-Id: I24fd6bf684a213c2e47978485442dd6c47073a7a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-10 09:54:08 +00:00
hjk
11d079a0fe Debugger: Partially fix QV4 dumper for Qt6
Just the 64 bit case, simple types.

Task-number: QTCREATORBUG-24098
Change-Id: If13e342c1fb419a026cdaa35b21483566e8494b7
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-12-10 09:32:13 +00:00
hjk
276c0ae482 Debugger: Adapt QStandardItemDumper to Qt6
Task-number: QTCREATORBUG-24098
Change-Id: I1c21e6a1ee3db3532029638eedfcf58eead53424
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-12-10 08:52:49 +00:00
David Schulz
34dfbe73b6 Debugger: Fix QVector and QList dumper with incomplete template types
This can hapen when QList and QVector is used in split.

Change-Id: Idb48901854e373139a38670a3d811bf01aef1915
Reviewed-by: hjk <hjk@qt.io>
2020-12-10 08:50:36 +00:00
hjk
ddb2ae657d Debugger: Improve QMeta* dumper for default-initialized objects
Null-dptr strikes again.

Task-number: QTCREATORBUG-24098
Change-Id: I4e24cbe4cad4995ce39116a1b51b26153004ccfc
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-09 13:42:08 +00:00
hjk
3b7aee724d Debugger: Fix QFile dumper 64 bit for Qt6
32 bit offsets are mechanically adapted on the base that the size change
was due to five containers changing from one to three pointer in Qt6,
but this has not been checked.

Task-number: QTCREATORBUG-24098
Change-Id: I492485a720f75df5fdde3dedb2fcfe9e953f1ed7
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-09 13:17:03 +00:00
hjk
ce2e8bd2fb Debugger: Adapt QJson dumper to Qt6
Task-number: QTCREATORBUG-24098
Change-Id: I0bdfca1389763582072fd774b6288b9a855cf8cf
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-12-09 08:50:48 +00:00
hjk
17d7f24911 Debugger: Fix QGraphicsPolygonItem dumper for Qt6 64 bits
And effectively disable the 32bit version, too much effort for the gain.

Change-Id: Ia11da05f3d57feba915d6b2d2d9c901e5aec3433
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-08 17:19:49 +00:00
hjk
fff1fafec7 Debugger: Consolidate list data extraction in dumper
Change-Id: I5b860da4b1d15ffab8c60418321e40943dbbe07a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-08 14:19:40 +00:00
hjk
73f2ea11dd Debugger: Make GDB dumper tests pass with Qt release builds
Change-Id: I45ae41486b8081bb803290895e942a71d41d5c0d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-08 12:59:24 +00:00
hjk
8044e7c505 Debugger: Re-fix QCbor dumper with Qt6
Change-Id: Icb2372fc9465b752a6709bf1d422ee3b1d79b2d6
Reviewed-by: David Schulz <david.schulz@qt.io>
2020-12-08 12:46:58 +00:00
David Schulz
6187998090 Debugger: re-add old qobject children dumper for qtversion < 6
Change-Id: Icbafb7c22d18247f89a8aa6a5029c9914d251c2e
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
2020-12-08 12:36:30 +00:00
hjk
786e4c6f8f Debugger: Re-enable shortcut to get known type sizes in dumpers
Looks like we need to continue with this crutch for MinGW.

This partiall reverts commit 1074c2ffce.

Change-Id: I89d32f31281c3ef720bbc2a21d5a99bfd0066ba3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
(cherry picked from commit ffe3c56670)
2020-12-08 10:03:54 +00:00
hjk
ffe3c56670 Debugger: Re-enable shortcut to get known type sizes in dumpers
Looks like we need to continue with this crutch for MinGW.

This partiall reverts commit 1074c2ffce.

Change-Id: I89d32f31281c3ef720bbc2a21d5a99bfd0066ba3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-08 09:38:09 +00:00
hjk
8e0cb785dc Debugger: Drop alloc return value from dumper vectorData() helper
Only used for checks, do that within the function.

Change-Id: I4cc302864a9d3f8edac6f6364dfdac33b548e60a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-07 15:47:20 +00:00
hjk
493f44ac6a Debugger: Fix QObject children display for Qt6
Task-number: QTCREATORBUG-24098
Change-Id: If7b1e498bcbd191faecbcab9462f1d72331211f3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-07 13:52:57 +00:00
hjk
aa9e1ec106 Debugger: Adapt QSet dumper and tests to Qt6
Task-number: QTCREATORBUG-24098
Change-Id: Ib9b2c53ee763871873f0cc3ad4f8ba0152999328
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-12-07 08:56:39 +00:00