Add name to threads

This help identifying threads when debugging.
The naming scheme is using 'class/function name + variable name'.
Note that the length limitaion is 16 chars on linux. On Windows, the limit is 32767 chars.

PR #21403.
This commit is contained in:
Chocobo1 2024-10-06 15:23:50 +08:00 committed by GitHub
parent 3fb5d7764c
commit 9e5433bcf8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 19 additions and 14 deletions

View file

@ -131,6 +131,7 @@ BitTorrent::BencodeResumeDataStorage::BencodeResumeDataStorage(const Path &path,
m_asyncWorker->moveToThread(m_ioThread.get()); m_asyncWorker->moveToThread(m_ioThread.get());
connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater); connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater);
m_ioThread->setObjectName("BencodeResumeDataStorage m_ioThread");
m_ioThread->start(); m_ioThread->start();
} }

View file

@ -37,7 +37,6 @@
#include "resumedatastorage.h" #include "resumedatastorage.h"
class QByteArray; class QByteArray;
class QThread;
namespace BitTorrent namespace BitTorrent
{ {

View file

@ -325,7 +325,6 @@ namespace BitTorrent
BitTorrent::DBResumeDataStorage::DBResumeDataStorage(const Path &dbPath, QObject *parent) BitTorrent::DBResumeDataStorage::DBResumeDataStorage(const Path &dbPath, QObject *parent)
: ResumeDataStorage(dbPath, parent) : ResumeDataStorage(dbPath, parent)
, m_ioThread {new QThread}
{ {
const bool needCreateDB = !dbPath.exists(); const bool needCreateDB = !dbPath.exists();

View file

@ -34,8 +34,6 @@
#include "base/utils/thread.h" #include "base/utils/thread.h"
#include "resumedatastorage.h" #include "resumedatastorage.h"
class QThread;
namespace BitTorrent namespace BitTorrent
{ {
class DBResumeDataStorage final : public ResumeDataStorage class DBResumeDataStorage final : public ResumeDataStorage
@ -61,8 +59,6 @@ namespace BitTorrent
void updateDB(int fromVersion) const; void updateDB(int fromVersion) const;
void enableWALMode() const; void enableWALMode() const;
Utils::Thread::UniquePtr m_ioThread;
class Worker; class Worker;
Worker *m_asyncWorker = nullptr; Worker *m_asyncWorker = nullptr;

View file

@ -35,6 +35,8 @@
#include <QMutexLocker> #include <QMutexLocker>
#include <QThread> #include <QThread>
#include "base/global.h"
const int TORRENTIDLIST_TYPEID = qRegisterMetaType<QList<BitTorrent::TorrentID>>(); const int TORRENTIDLIST_TYPEID = qRegisterMetaType<QList<BitTorrent::TorrentID>>();
BitTorrent::ResumeDataStorage::ResumeDataStorage(const Path &path, QObject *parent) BitTorrent::ResumeDataStorage::ResumeDataStorage(const Path &path, QObject *parent)
@ -56,6 +58,7 @@ void BitTorrent::ResumeDataStorage::loadAll() const
{ {
doLoadAll(); doLoadAll();
}); });
loadingThread->setObjectName("ResumeDataStorage::loadAll loadingThread");
connect(loadingThread, &QThread::finished, loadingThread, &QObject::deleteLater); connect(loadingThread, &QThread::finished, loadingThread, &QObject::deleteLater);
loadingThread->start(); loadingThread->start();
} }

View file

@ -536,6 +536,7 @@ SessionImpl::SessionImpl(QObject *parent)
{ {
// It is required to perform async access to libtorrent sequentially // It is required to perform async access to libtorrent sequentially
m_asyncWorker->setMaxThreadCount(1); m_asyncWorker->setMaxThreadCount(1);
m_asyncWorker->setObjectName("SessionImpl m_asyncWorker");
if (port() < 0) if (port() < 0)
m_port = Utils::Random::rand(1024, 65535); m_port = Utils::Random::rand(1024, 65535);
@ -600,6 +601,7 @@ SessionImpl::SessionImpl(QObject *parent)
connect(m_ioThread.get(), &QThread::finished, m_torrentContentRemover, &QObject::deleteLater); connect(m_ioThread.get(), &QThread::finished, m_torrentContentRemover, &QObject::deleteLater);
connect(m_torrentContentRemover, &TorrentContentRemover::jobFinished, this, &SessionImpl::torrentContentRemovingFinished); connect(m_torrentContentRemover, &TorrentContentRemover::jobFinished, this, &SessionImpl::torrentContentRemovingFinished);
m_ioThread->setObjectName("SessionImpl m_ioThread");
m_ioThread->start(); m_ioThread->start();
initMetrics(); initMetrics();
@ -659,6 +661,7 @@ SessionImpl::~SessionImpl()
qDebug("Deleting libtorrent session..."); qDebug("Deleting libtorrent session...");
delete nativeSessionProxy; delete nativeSessionProxy;
}); });
sessionTerminateThread->setObjectName("~SessionImpl sessionTerminateThread");
connect(sessionTerminateThread, &QThread::finished, sessionTerminateThread, &QObject::deleteLater); connect(sessionTerminateThread, &QThread::finished, sessionTerminateThread, &QObject::deleteLater);
sessionTerminateThread->start(); sessionTerminateThread->start();
if (sessionTerminateThread->wait(shutdownDeadlineTimer)) if (sessionTerminateThread->wait(shutdownDeadlineTimer))

View file

@ -57,7 +57,6 @@
#include "trackerentrystatus.h" #include "trackerentrystatus.h"
class QString; class QString;
class QThread;
class QThreadPool; class QThreadPool;
class QTimer; class QTimer;
class QUrl; class QUrl;

View file

@ -62,7 +62,10 @@ BitTorrent::TorrentCreationManager::TorrentCreationManager(IApplication *app, QO
, m_maxTasks {SETTINGS_KEY(u"MaxTasks"_s), 256} , m_maxTasks {SETTINGS_KEY(u"MaxTasks"_s), 256}
, m_numThreads {SETTINGS_KEY(u"NumThreads"_s), 1} , m_numThreads {SETTINGS_KEY(u"NumThreads"_s), 1}
, m_tasks {std::make_unique<TaskSet>()} , m_tasks {std::make_unique<TaskSet>()}
, m_threadPool(this)
{ {
m_threadPool.setObjectName("TorrentCreationManager m_threadPool");
if (m_numThreads > 0) if (m_numThreads > 0)
m_threadPool.setMaxThreadCount(m_numThreads); m_threadPool.setMaxThreadCount(m_numThreads);
} }

View file

@ -123,6 +123,7 @@ AutoDownloader::AutoDownloader(IApplication *app)
.arg(fileName.toString(), errorString), Log::CRITICAL); .arg(fileName.toString(), errorString), Log::CRITICAL);
}); });
m_ioThread->setObjectName("RSS::AutoDownloader m_ioThread");
m_ioThread->start(); m_ioThread->start();
connect(app->addTorrentManager(), &AddTorrentManager::torrentAdded connect(app->addTorrentManager(), &AddTorrentManager::torrentAdded

View file

@ -41,7 +41,6 @@
#include "base/settingvalue.h" #include "base/settingvalue.h"
#include "base/utils/thread.h" #include "base/utils/thread.h"
class QThread;
class QTimer; class QTimer;
class Application; class Application;

View file

@ -90,6 +90,7 @@ Session::Session()
m_itemsByPath.insert(u""_s, new Folder); // root folder m_itemsByPath.insert(u""_s, new Folder); // root folder
m_workingThread->setObjectName("RSS::Session m_workingThread");
m_workingThread->start(); m_workingThread->start();
load(); load();

View file

@ -146,6 +146,7 @@ TorrentFilesWatcher::TorrentFilesWatcher(QObject *parent)
m_asyncWorker->moveToThread(m_ioThread.get()); m_asyncWorker->moveToThread(m_ioThread.get());
connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater); connect(m_ioThread.get(), &QThread::finished, m_asyncWorker, &QObject::deleteLater);
m_ioThread->setObjectName("TorrentFilesWatcher m_ioThread");
m_ioThread->start(); m_ioThread->start();
load(); load();

View file

@ -36,8 +36,6 @@
#include "base/path.h" #include "base/path.h"
#include "base/utils/thread.h" #include "base/utils/thread.h"
class QThread;
/* /*
* Watches the configured directories for new .torrent files in order * Watches the configured directories for new .torrent files in order
* to add torrents to BitTorrent session. Supports Network File System * to add torrents to BitTorrent session. Supports Network File System

View file

@ -39,7 +39,6 @@
#include <QSplitter> #include <QSplitter>
#include <QShortcut> #include <QShortcut>
#include <QStackedWidget> #include <QStackedWidget>
#include <QThread>
#include <QUrl> #include <QUrl>
#include "base/bittorrent/infohash.h" #include "base/bittorrent/infohash.h"

View file

@ -37,7 +37,6 @@
#include <QMessageBox> #include <QMessageBox>
#include <QModelIndexList> #include <QModelIndexList>
#include <QShortcut> #include <QShortcut>
#include <QThread>
#include <QWheelEvent> #include <QWheelEvent>
#include "base/bittorrent/torrentcontenthandler.h" #include "base/bittorrent/torrentcontenthandler.h"

View file

@ -109,6 +109,7 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const Path &defaultP
updateInputPath(defaultPath); updateInputPath(defaultPath);
m_threadPool.setMaxThreadCount(1); m_threadPool.setMaxThreadCount(1);
m_threadPool.setObjectName("TorrentCreatorDialog m_threadPool");
#ifdef QBT_USES_LIBTORRENT2 #ifdef QBT_USES_LIBTORRENT2
m_ui->checkOptimizeAlignment->hide(); m_ui->checkOptimizeAlignment->hide();

View file

@ -75,7 +75,7 @@ public:
, m_defaultColor {defaultColor} , m_defaultColor {defaultColor}
, m_currentColor {currentColor} , m_currentColor {currentColor}
{ {
setObjectName(u"colorWidget"_s); setObjectName("colorWidget");
setFrameShape(QFrame::Box); setFrameShape(QFrame::Box);
setFrameShadow(QFrame::Plain); setFrameShadow(QFrame::Plain);
setAlignment(Qt::AlignCenter); setAlignment(Qt::AlignCenter);
@ -159,7 +159,7 @@ public:
: QLabel(parent) : QLabel(parent)
, m_defaultPath {defaultPath} , m_defaultPath {defaultPath}
{ {
setObjectName(u"iconWidget"_s); setObjectName("iconWidget");
setAlignment(Qt::AlignCenter); setAlignment(Qt::AlignCenter);
setCurrentPath(currentPath); setCurrentPath(currentPath);

View file

@ -134,6 +134,7 @@ void Utils::Gui::openPath(const Path &path)
::CoUninitialize(); ::CoUninitialize();
} }
}); });
thread->setObjectName("Utils::Gui::openPath thread");
QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater); QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater);
thread->start(); thread->start();
#else #else
@ -168,6 +169,7 @@ void Utils::Gui::openFolderSelect(const Path &path)
::CoUninitialize(); ::CoUninitialize();
} }
}); });
thread->setObjectName("Utils::Gui::openFolderSelect thread");
QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater); QObject::connect(thread, &QThread::finished, thread, &QObject::deleteLater);
thread->start(); thread->start();
#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) #elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)

View file

@ -184,6 +184,7 @@ WebApplication::WebApplication(IApplication *app, QObject *parent)
m_freeDiskSpaceChecker->moveToThread(m_workerThread.get()); m_freeDiskSpaceChecker->moveToThread(m_workerThread.get());
connect(m_workerThread.get(), &QThread::finished, m_freeDiskSpaceChecker, &QObject::deleteLater); connect(m_workerThread.get(), &QThread::finished, m_freeDiskSpaceChecker, &QObject::deleteLater);
m_workerThread->setObjectName("WebApplication m_workerThread");
m_workerThread->start(); m_workerThread->start();
m_freeDiskSpaceCheckingTimer->setInterval(FREEDISKSPACE_CHECK_TIMEOUT); m_freeDiskSpaceCheckingTimer->setInterval(FREEDISKSPACE_CHECK_TIMEOUT);