From d7a0b735c9a5710a5fbae71d899b808c1d0df614 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 25 Jan 2021 16:01:28 +0100 Subject: [PATCH 1/4] Doc: Move info about debugger settings ...to a separate .qdocinc file included from "Interacting with the Debugger". Change a conflicting section title in run settings docs. Task-number: QTCREATORBUG-24500 Change-Id: I6e3e205d1dfdcfabaf80fc18bd2b73c1256644e4 Reviewed-by: hjk --- .../creator-debugger-settings.qdocinc | 212 ++++++++++++++++++ .../creator-only/creator-debugger-setup.qdoc | 194 +--------------- .../creator-only/creator-debugger.qdoc | 2 + ...reator-projects-settings-run-debug.qdocinc | 4 +- 4 files changed, 217 insertions(+), 195 deletions(-) create mode 100644 doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc new file mode 100644 index 00000000000..28fe490a02c --- /dev/null +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdocinc @@ -0,0 +1,212 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Creator documentation. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + +/*! + +//! [debugger-settings] + + \section1 Specifying Debugger Settings + + To specify settings for managing debugger processes, select \uicontrol Tools + > \uicontrol Options > \uicontrol Debugger. In the \uicontrol General tab, + you can specify settings that are common to all debuggers. + + \image qtcreator-debugger-general-options.png + + \section2 Mapping Source Paths + + To enable the debugger to step into the code and display the source code + when using a copy of the source tree at a location different from the one + at which the libraries were built, map the source paths to target paths: + + \list 1 + \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > + \uicontrol General > \uicontrol Add. + \li In the \uicontrol {Source path} field, specify the source path in + the debug information of the executable as reported by the debugger. + \li In the \uicontrol {Target path} field, specify the actual location + of the source tree on the local machine. + \endlist + + \section2 Specifying GDB Settings + + To specify settings for managing the GDB process, select \uicontrol Tools > + \uicontrol Options > \uicontrol Debugger > \uicontrol GDB. + + \image qtcreator-gdb-options.png "GDB options" + + To specify a timeout for terminating non-responsive GDB processes, set the + number of seconds to wait in the \uicontrol {GDB timeout} field. The default + value of 20 seconds should be sufficient for most applications, but if + loading big libraries or listing source files takes much longer than + that on slow machines, you should increase the value. + + To compress several steps into one step for less noisy debugging when + stepping into code, select the \uicontrol {Skip known frames when stepping} + check box. For example, the atomic reference counting code is skipped, and + a single \e {Step Into} for a signal emission ends up directly in the slot + connected to it. + + To display a message box as soon as your application receives a signal, such + as SIGSEGV, during debugging, select the \uicontrol {Show a message box when + receiving a signal} check box. + + GDB allows setting breakpoints on source lines for which no code was + generated. In such situations, the breakpoint is shifted to the next + source code line for which the code was actually generated. To reflect + such temporary changes by moving the breakpoint markers in the source + code editor, select the \uicontrol {Adjust breakpoint locations} check box. + + To specify whether the dynamic or the static type of objects will be + displayed, select the \uicontrol {Use dynamic object type for display} + check box. Keep in mind that choosing the dynamic type might be slower. + + To allow reading the user's default .gdbinit file on debugger startup, + select the \uicontrol {Load .gdbinit file on startup} check box. + + To use the default GDB pretty printers installed in your system + or linked to the libraries your application uses, select the + \uicontrol {Load system GDB pretty printers} check box. + + By default, GDB shows AT&T style disassembly. To switch to the Intel style, + select the \uicontrol {Use Intel style disassembly} check box. + + To execute GDB commands after GDB has been started, but before the debugged + program is started or attached, and before the debugging helpers are + initialized, enter them in the \uicontrol {Additional Startup Commands} + field. + + To execute GDB commands after GDB has successfully attached to remote + targets, enter them in the \uicontrol {Additional Attach Commands} field. + You can add commands to further set up the target here, such as + \c {monitor reset} or \c {load}. + + To execute simple Python commands, prefix them with \c python. To execute + sequences of Python commands spanning multiple lines, prepend the block + with \c python on a separate line, and append \c end on a separate line. + To execute arbitrary Python scripts, use + \c {python execfile('/path/to/script.py')}. + + \section2 Specifying Extended GDB Settings + + To specify extended settings for GBD, select \uicontrol Tools > + \uicontrol Options > \uicontrol Debugger > \uicontrol {GDB Extended}. + The settings give access to advanced or experimental functions of GDB. + Enabling them may negatively impact your debugging experience, so use + them with care. + + \image qtcreator-gdb-extended-options.png "GDB Extended options" + + To use asynchronous mode to control the inferior, select the + respective check box. + + To add common paths to locations of debug information, such as + \c {/usr/src/debug}, when starting GDB, select the + \uicontrol {Use common locations for debug information} check box. + + To stop when \c qWarning, \c qFatal, or \c abort is called, select the + respective check box. + + To enable stepping backwards, select the \uicontrol {Enable reverse + debugging} check box. This feature is very slow and unstable on the + GDB side. It exhibits unpredictable behavior when going backwards over + system calls and is very likely to destroy your debugging session. + + To keep debugging all children after a fork, select the + \uicontrol {Debug all child processes} check box. + + \section2 Specifying CDB Settings + + To specify settings for managing the CDB process, select \uicontrol Tools > + \uicontrol Options > \uicontrol Debugger > \uicontrol CDB. + + \image qtcreator-cdb-options.png "CDB options" + + You can specify additional arguments for starting CDB in the + \uicontrol {Additional arguments} field. + + If a console application does not start up properly in the configured + console and the subsequent attach fails, you can diagnose the issue by + using CDB's native console. Select the \uicontrol {Use CDB console} + check box to override the console set in the Windows system + environment variables. Note that the native console does not + prompt on application exit. + + To automatically add a breakpoint on the \c CrtCbgReport() function, + select the \uicontrol {Stop when CrtCbgReport() is called} check box. + This catches runtime error messages caused by \c assert(), for example. + + In the \uicontrol {Break on} group, specify whether the debugger should + break on C++ exceptions, on thread creation or exit, on loading or + unloading the specified \l{Viewing Modules}{application modules}, or on + the specified output. + + To disable first-chance break on access violation exceptions, select the + \uicontrol {Ignore first chance access violations} check box. + The second occurrence of an access violation will break into the debugger. + + CDB enables setting breakpoints in comments or on source lines for which + no code was generated. In such situations, the breakpoint is shifted to + the next source code line for which the code was actually generated. To + reflect such temporary changes by moving the breakpoint markers in the + source code editor, select the \uicontrol {Correct breakpoint location} + check box. For more information, see \l{Setting Breakpoints}. + + To use the abstraction layer provided by Python Dumper + classes to create a description of data items displayed + in the \uicontrol Locals and \uicontrol Expressions + views, select the \uicontrol {Use Python dumper} check box. + For more information, see \l{Debugging Helper Implementation}. + + To add information about first-chance and second-chance exceptions + to the \uicontrol Issues output pane, select the check boxes + in the \uicontrol {Add Exceptions to the Issues View} group. + + \section2 Setting CDB Paths on Windows + + To obtain debugging information for the operating system libraries for + debugging Windows applications, add the Symbol Server provided by Microsoft + to the symbol search path of the debugger: + + \list 1 + \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > + \uicontrol {CDB Paths}. + \image qtcreator-debugger-cdb-paths.png + \li In the \uicontrol {Symbol Paths} group, select \uicontrol Insert. + \li Select the directory where you want to store the cached information. + Use a subfolder in a temporary directory, such as + \c {C:\temp\symbolcache}. + \li Select \uicontrol OK. + \endlist + + \note Populating the cache might take a long time on a slow network + connection. + + To use the Source Server infrastructure for fetching missing source files + directly from version control or the web, enter the following string in + the \uicontrol {Source Paths} field: \c srv*. + +//! [debugger-settings] +*/ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc index 1cbfac3d04f..84f3132ea29 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -230,198 +230,6 @@ We recommend using the LLDB version that is delivered with the latest Xcode. - \section1 Specifying Debugger Settings - - To specify settings for managing debugger processes, select \uicontrol Tools - > \uicontrol Options > \uicontrol Debugger. In the \uicontrol General tab, - you can specify settings that are common to all debuggers. - - \image qtcreator-debugger-general-options.png - - \section2 Specifying GDB Settings - - To specify settings for managing the GDB process, select \uicontrol Tools > - \uicontrol Options > \uicontrol Debugger > \uicontrol GDB. - - \image qtcreator-gdb-options.png "GDB options" - - To specify a timeout for terminating non-responsive GDB processes, set the - number of seconds to wait in the \uicontrol {GDB timeout} field. The default - value of 20 seconds should be sufficient for most applications, but if - loading big libraries or listing source files takes much longer than - that on slow machines, you should increase the value. - - To compress several steps into one step for less noisy debugging when - stepping into code, select the \uicontrol {Skip known frames when stepping} - check box. For example, the atomic reference counting code is skipped, and - a single \e {Step Into} for a signal emission ends up directly in the slot - connected to it. - - To display a message box as soon as your application receives a signal, such - as SIGSEGV, during debugging, select the \uicontrol {Show a message box when - receiving a signal} check box. - - GDB allows setting breakpoints on source lines for which no code was - generated. In such situations, the breakpoint is shifted to the next - source code line for which the code was actually generated. To reflect - such temporary changes by moving the breakpoint markers in the source - code editor, select the \uicontrol {Adjust breakpoint locations} check box. - - To specify whether the dynamic or the static type of objects will be - displayed, select the \uicontrol {Use dynamic object type for display} - check box. Keep in mind that choosing the dynamic type might be slower. - - To allow reading the user's default .gdbinit file on debugger startup, - select the \uicontrol {Load .gdbinit file on startup} check box. - - To use the default GDB pretty printers installed in your system - or linked to the libraries your application uses, select the - \uicontrol {Load system GDB pretty printers} check box. - - By default, GDB shows AT&T style disassembly. To switch to the Intel style, - select the \uicontrol {Use Intel style disassembly} check box. - - To execute GDB commands after GDB has been started, but before the debugged - program is started or attached, and before the debugging helpers are - initialized, enter them in the \uicontrol {Additional Startup Commands} - field. - - To execute GDB commands after GDB has successfully attached to remote - targets, enter them in the \uicontrol {Additional Attach Commands} field. - You can add commands to further set up the target here, such as - \c {monitor reset} or \c {load}. - - To execute simple Python commands, prefix them with \c python. To execute - sequences of Python commands spanning multiple lines, prepend the block - with \c python on a separate line, and append \c end on a separate line. - To execute arbitrary Python scripts, use - \c {python execfile('/path/to/script.py')}. - - \section2 Specifying Extended GDB Settings - - To specify extended settings for GBD, select \uicontrol Tools > - \uicontrol Options > \uicontrol Debugger > \uicontrol {GDB Extended}. - The settings give access to advanced or experimental functions of GDB. - Enabling them may negatively impact your debugging experience, so use - them with care. - - \image qtcreator-gdb-extended-options.png "GDB Extended options" - - To use asynchronous mode to control the inferior, select the - respective check box. - - To add common paths to locations of debug information, such as - \c {/usr/src/debug}, when starting GDB, select the - \uicontrol {Use common locations for debug information} check box. - - To stop when \c qWarning, \c qFatal, or \c abort is called, select the - respective check box. - - To enable stepping backwards, select the \uicontrol {Enable reverse - debugging} check box. This feature is very slow and unstable on the - GDB side. It exhibits unpredictable behavior when going backwards over - system calls and is very likely to destroy your debugging session. - - To keep debugging all children after a fork, select the - \uicontrol {Debug all child processes} check box. - - \section2 Specifying CDB Settings - - To specify settings for managing the CDB process, select \uicontrol Tools > - \uicontrol Options > \uicontrol Debugger > \uicontrol CDB. - - \image qtcreator-cdb-options.png "CDB options" - - You can specify additional arguments for starting CDB in the - \uicontrol {Additional arguments} field. - - If a console application does not start up properly in the configured - console and the subsequent attach fails, you can diagnose the issue by - using CDB's native console. Select the \uicontrol {Use CDB console} - check box to override the console set in the Windows system - environment variables. Note that the native console does not - prompt on application exit. - - To automatically add a breakpoint on the \c CrtCbgReport() function, - select the \uicontrol {Stop when CrtCbgReport() is called} check box. - This catches runtime error messages caused by \c assert(), for example. - - In the \uicontrol {Break on} group, specify whether the debugger should - break on C++ exceptions, on thread creation or exit, on loading or - unloading the specified \l{Viewing Modules}{application modules}, or on - the specified output. - - To disable first-chance break on access violation exceptions, select the - \uicontrol {Ignore first chance access violations} check box. - The second occurrence of an access violation will break into the debugger. - - CDB enables setting breakpoints in comments or on source lines for which - no code was generated. In such situations, the breakpoint is shifted to - the next source code line for which the code was actually generated. To - reflect such temporary changes by moving the breakpoint markers in the - source code editor, select the \uicontrol {Correct breakpoint location} - check box. For more information, see \l{Setting Breakpoints}. - - To use the abstraction layer provided by Python Dumper - classes to create a description of data items displayed - in the \uicontrol Locals and \uicontrol Expressions - views, select the \uicontrol {Use Python dumper} check box. - For more information, see \l{Debugging Helper Implementation}. - - To add information about first-chance and second-chance exceptions - to the \uicontrol Issues output pane, select the check boxes - in the \uicontrol {Add Exceptions to the Issues View} group. - - \section1 Mapping Source Paths - - To enable the debugger to step into the code and display the source code - when using a copy of the source tree at a location different from the one - at which the libraries were built, map the source paths to target paths: - - \list 1 - - \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > - \uicontrol General > \uicontrol Add. - - \li In the \uicontrol {Source path} field, specify the source path in - the debug information of the executable as reported by the debugger. - - \li In the \uicontrol {Target path} field, specify the actual location - of the source tree on the local machine. - - \endlist - - \section1 Setting CDB Paths on Windows - - To obtain debugging information for the operating system libraries for - debugging Windows applications, add the Symbol Server provided by Microsoft - to the symbol search path of the debugger: - - \list 1 - - \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > - \uicontrol {CDB Paths}. - - \image qtcreator-debugger-cdb-paths.png - - \li In the \uicontrol {Symbol Paths} group, select \uicontrol Insert. - - \li Select the directory where you want to store the cached information. - - Use a subfolder in a temporary directory, such as - \c {C:\temp\symbolcache}. - - \li Select \uicontrol OK. - - \endlist - - \note Populating the cache might take a long time on a slow network - connection. - - To use the Source Server infrastructure for fetching missing source files - directly from version control or the web, enter the following string in - the \uicontrol {Source Paths} field: \c srv*. - \section1 Setting up FSF GDB for \macos To use FSF GDB on \macos, you must sign it and add it to the \QC diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index b10498edc24..723950ef2fd 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -784,6 +784,8 @@ \l{https://sourceware.org/gdb/onlinedocs/gdb/Core-File-Generation.html}. \endomit + + \include creator-debugger-settings.qdocinc debugger-settings */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdocinc index ef3389e27d9..ce5b73d07e7 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-run-debug.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -26,7 +26,7 @@ /*! //! [run settings debugger] - \section1 Specifying Debugger Settings + \section1 Enabling Debugging \image qtquick-debugging-settings.png "Debugger Settings" From 712d93e1c9d589ef68983e5f55b97ea8bf8ea2e6 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 26 Jan 2021 12:01:52 +0100 Subject: [PATCH 2/4] Doc: Describe Debugger settings in appropriate sections Link to the "Debugger Settings" section where appropriate. Task-number: QTCREATORBUG-24500 Change-Id: I7e19211c22bf0139678d49e46db3bd2bb04c7260 Reviewed-by: hjk --- .../qtcreator-debugger-general-options.png | Bin 17904 -> 19020 bytes .../debugger/creator-debugger-common.qdocinc | 5 ++ .../creator-debugger-settings.qdocinc | 17 +++++-- .../creator-only/creator-debugger.qdoc | 46 +++++++++++++++++- 4 files changed, 64 insertions(+), 4 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-debugger-general-options.png b/doc/qtcreator/images/qtcreator-debugger-general-options.png index 8732a076a620b257394c1803d4b401e24ab36764..7823c7668d90e67f20f585e32ef645fd8eff49d0 100644 GIT binary patch literal 19020 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 E0IKJU6#xJL literal 17904 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 \uicontrol Options > \uicontrol Debugger > - \uicontrol General > \uicontrol Add. + \li In \uicontrol {Source Paths Mapping}, select \uicontrol Add to add + an entry to the path list. \li In the \uicontrol {Source path} field, specify the source path in the debug information of the executable as reported by the debugger. \li In the \uicontrol {Target path} field, specify the actual location diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index 723950ef2fd..2cc62044585 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -124,6 +124,10 @@ \uicontrol GDB and \uicontrol CDB. For more information, see \l{Specifying Debugger Settings}. + To allow reading the user's default .gdbinit file on debugger startup, + select the \uicontrol {Load .gdbinit file on startup} check box in + GDB settings. For more information, see \l{Specifying GDB Settings}. + \note Starting a C++ program in the debugger can take a long time, typically in the range of several seconds to minutes if complex features are used. @@ -411,6 +415,13 @@ \endlist + By default, a non-responsive GDB process is terminated after 20 seconds. + To increase the timeout in the \uicontrol {GDB timeout} field, select + \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > + \uicontrol GDB. For more information about settings that you can specify + to manage the GDB process, see \l{Specifying GDB Settings} and + \l{Specifying Extended GDB Settings}. + \section3 Using CDB In remote mode, the local CDB process talks to a CDB process that runs on @@ -475,6 +486,10 @@ \li Click \uicontrol OK to start debugging. \endlist + + To specify settings for managing the CDB process, select \uicontrol Tools > + \uicontrol Options > \uicontrol Debugger > \uicontrol CDB. For more + information, see \l{Specifying CDB Settings}. */ @@ -608,6 +623,16 @@ It is also possible to continue executing the program until the current function completes or jump to an arbitrary position in the current function. + \section2 Stepping Into Code + + When using GDB as the debugging backend, you can compress several steps + into one step for less noisy debugging. For more information, see + \l{Specifying GDB Settings}. + + The extended GDB settings provide the option to step backwards in code, + but this option should be used with care, as it is slow and unstable on the + GDB side. For more information, see \l{Specifying Extended GDB Settings}. + \section2 Customizing Debug Views You can change the appearance and behavior of the debug views by specifying @@ -736,6 +761,11 @@ Right-click the view to open a context menu that contains menu items for reloading data and opening files. + To enable the debugger to step into the code and display the source code + when using a copy of the source tree at a location different from the one + at which the libraries were built, you can map source paths to target + paths. For more information, see \l{Mapping Source Paths}. + By default, the \uicontrol {Source Files} view is hidden. \section2 Viewing Disassembled Code @@ -752,6 +782,10 @@ running. Alternatively, click the \inlineimage debugger_singleinstructionmode.png (\uicontrol {Operate by Instruction}) tool button on the debugger tool bar. + By default, GDB shows AT&T style disassembly. To switch to the Intel style, + select \uicontrol Tools > \uicontrol Options > \uicontrol Debugger > + \uicontrol GDB > \uicontrol {Use Intel style disassembly}. + \section2 Viewing and Editing Register State The \uicontrol Registers view displays the current state of the CPU registers. @@ -834,7 +868,7 @@ \QC uses Python scripts to translate raw memory contents and type information data from native debugger backends (GDB, LLDB, and CDB are currently supported) - into the form presented to the user in the \uicontrol {Locals} and + into the form presented to the user in the \uicontrol {Locals} and \uicontrol {Expressions} views. Unlike GDB's @@ -845,6 +879,11 @@ Linux, LLDB on macOS, and CDB on Windows, or any other platform on which at least one of the three supported backends is available. + To use the default GDB pretty printers installed in your system or linked + to the libraries your application uses, select \uicontrol Options > + \uicontrol Debugger > \uicontrol GDB > \uicontrol {Load system GDB pretty + printers}. For more information, see \l{Specifying GDB Settings}. + \section2 Customizing Built-In Debugging Helpers You can have commands executed after built-in debugging helpers have @@ -870,6 +909,11 @@ handle SIGSTOP nostop \endcode + To display a message box as soon as your application receives a signal + during debugging, select \uicontrol Tools > \uicontrol Options > + \uicontrol Debugger > \uicontrol GDB > \uicontrol {Show a message box + when receiving a signal}. + \section2 Adding Custom Debugging Helpers To add debugging helpers for your own types, no compilation is required, From 9ddd3549685916ebe9268343fe0e0fca642f1507 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 5 Feb 2021 17:51:15 +0100 Subject: [PATCH 3/4] Wizards: Fix language string in .ts file Fixes: QTCREATORBUG-25293 Change-Id: I6e0ed7d271d60e651bf7c0aacad36a2c8e0916ed Reviewed-by: Kai Koehne --- src/plugins/qtsupport/translationwizardpage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qtsupport/translationwizardpage.cpp b/src/plugins/qtsupport/translationwizardpage.cpp index d90d2a9e0c5..30a01766c07 100644 --- a/src/plugins/qtsupport/translationwizardpage.cpp +++ b/src/plugins/qtsupport/translationwizardpage.cpp @@ -145,7 +145,7 @@ bool TranslationWizardPage::validatePage() { const auto w = static_cast(wizard()); w->setValue("TsFileName", tsBaseName().isEmpty() ? QString() : QString(tsBaseName() + ".ts")); - w->setValue("TsLanguage", m_fileNameLineEdit.text()); + w->setValue("TsLanguage", m_languageComboBox.currentData().toString()); return true; } From 1641f2eb8771f0eafb43e83a0a54321da9a2e374 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 8 Feb 2021 17:57:28 +0100 Subject: [PATCH 4/4] QmlDesigner.CapturedDataCommand: Store visible property Change-Id: Idc2b4c9a859f9a9e03dea915ca98e91b4efdd488 Reviewed-by: Thomas Hartmann --- .../instances/qt5capturepreviewnodeinstanceserver.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp index 39bbe73f93a..53c82ccc8bf 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5capturepreviewnodeinstanceserver.cpp @@ -71,6 +71,10 @@ CapturedDataCommand::StateData collectStateData(ServerNodeInstance rootNodeInsta if (!colorProperty.isNull()) nodeData.properties.emplace_back(QString{"color"}, colorProperty); + auto visibleProperty = instance.property("visible"); + if (!colorProperty.isNull()) + nodeData.properties.emplace_back(QString{"visible"}, visibleProperty); + stateData.nodeData.push_back(std::move(nodeData)); }