diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index f4922e4ab2a98f52865f80465c4e2b59cd0c5972..57bbe853bf1cb9cf1bb3d8289ec939d7ab00c673 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -151,6 +151,13 @@ DebuggerSettings *DebuggerSettings::instance()
     item->setDefaultValue(false);
     instance->insertItem(LogTimeStamps, item);
 
+    item = new SavedAction(instance);
+    item->setText(tr("Verbose Log"));
+    item->setSettingsKey(debugModeGroup, QLatin1String("VerboseLog"));
+    item->setCheckable(true);
+    item->setDefaultValue(false);
+    instance->insertItem(VerboseLog, item);
+
     item = new SavedAction(instance);
     item->setText(tr("Operate by instruction"));
     item->setCheckable(true);
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index cfa43c39238b4466b672e888c7b136d5619f5fe4..b8519994b70f079e32d2e08d2456097c7a01a83a 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -77,6 +77,7 @@ enum DebuggerActionCode
     AutoQuit,
     LockView,
     LogTimeStamps,
+    VerboseLog,
     OperateByInstruction,
     AutoDerefPointers,
 
diff --git a/src/plugins/debugger/debuggeroutputwindow.cpp b/src/plugins/debugger/debuggeroutputwindow.cpp
index cbca456c8e7e1727eebf102e698fd46afbb13ced..981045be168b1489878d3fa087bd65ff67a89122 100644
--- a/src/plugins/debugger/debuggeroutputwindow.cpp
+++ b/src/plugins/debugger/debuggeroutputwindow.cpp
@@ -172,6 +172,7 @@ public:
         theDebuggerAction(ExecuteCommand)->setData(textCursor().block().text());
         menu->addAction(theDebuggerAction(ExecuteCommand));
         menu->addAction(theDebuggerAction(LogTimeStamps));
+        menu->addAction(theDebuggerAction(VerboseLog));
         menu->addSeparator();
         menu->addAction(theDebuggerAction(SettingsDialog));
         menu->exec(ev->globalPos());
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 9ba2e68083fa0a5ed59178883fc770ebe8b5fb53..f65a4c6e5d6aee8abba1fd7189eeefded7512f0d 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -367,6 +367,7 @@ QWidget *CommonOptionsPage::createPage(QWidget *parent)
     m_group.insert(theDebuggerAction(ShowStdNamespace), 0);
     m_group.insert(theDebuggerAction(ShowQtNamespace), 0);
     m_group.insert(theDebuggerAction(LogTimeStamps), 0);
+    m_group.insert(theDebuggerAction(VerboseLog), 0);
     m_group.insert(theDebuggerAction(UsePreciseBreakpoints), 0);
 
 #ifdef USE_REVERSE_DEBUGGING
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp
index 8a7e74a7f2a507555d41b1b5fc1c814249a759a7..49dd70150a64148a2cd772de95a213ba7c332268 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.cpp
+++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp
@@ -33,6 +33,7 @@
 #include "s60debuggerbluetoothstarter.h"
 #include "bluetoothlistener_gui.h"
 
+#include "debuggeractions.h"
 #include "debuggerstringutils.h"
 #ifndef STANDALONE_RUNNER
 #include "gdbengine.h"
@@ -212,14 +213,6 @@ TrkGdbAdapter::TrkGdbAdapter(GdbEngine *engine, const TrkOptionsPtr &options) :
     m_bufferedMemoryRead = false;
     m_bufferedMemoryRead = true;
 
-    const QByteArray trkVerbose = qgetenv("QTC_TRK_VERBOSE");
-    if (!trkVerbose.isEmpty()) {
-        bool ok;
-        m_verbose = trkVerbose.toInt(&ok);
-        if (!ok)
-            m_verbose = 1;
-    }
-
     m_gdbServer = 0;
     m_gdbConnection = 0;
     m_snapshot.reset();
@@ -235,11 +228,13 @@ TrkGdbAdapter::TrkGdbAdapter(GdbEngine *engine, const TrkOptionsPtr &options) :
     connect(m_trkDevice.data(), SIGNAL(error(QString)),
         this, SLOT(handleTrkError(QString)));
 
-    m_trkDevice->setVerbose(m_verbose);
+    setVerbose(theDebuggerBoolSetting(VerboseLog));
     m_trkDevice->setSerialFrame(effectiveTrkDeviceType() != TrkOptions::BlueTooth);
 
     connect(m_trkDevice.data(), SIGNAL(logMessage(QString)),
         this, SLOT(trkLogMessage(QString)));
+    connect(theDebuggerAction(VerboseLog), SIGNAL(valueChanged(QVariant)),
+        this, SLOT(setVerbose(QVariant)));
 }
 
 TrkGdbAdapter::~TrkGdbAdapter()
@@ -248,6 +243,17 @@ TrkGdbAdapter::~TrkGdbAdapter()
     logMessage("Shutting down.\n");
 }
 
+void TrkGdbAdapter::setVerbose(const QVariant &value)
+{
+    setVerbose(value.toInt());
+}
+
+void TrkGdbAdapter::setVerbose(int verbose)
+{
+    m_verbose = verbose;
+    m_trkDevice->setVerbose(m_verbose);
+}
+
 QString TrkGdbAdapter::effectiveTrkDevice() const
 {
     if (!m_overrideTrkDevice.isEmpty())
diff --git a/src/plugins/debugger/gdb/trkgdbadapter.h b/src/plugins/debugger/gdb/trkgdbadapter.h
index edf9e8a9b299892a89e1d85df1c877f71bc30372..7ef9ac4f4426355967c059b365e288a3fd445c3e 100644
--- a/src/plugins/debugger/gdb/trkgdbadapter.h
+++ b/src/plugins/debugger/gdb/trkgdbadapter.h
@@ -140,7 +140,8 @@ public:
     QString gdbServerName() const { return m_gdbServerName; }
     QString gdbServerIP() const;
     uint gdbServerPort() const;
-    void setVerbose(int verbose) { m_verbose = verbose; }
+    Q_SLOT void setVerbose(const QVariant &value);
+    void setVerbose(int verbose);
     void setBufferedMemoryRead(bool b) { m_bufferedMemoryRead = b; }
     trk::Session &session() { return m_session; }
 
diff --git a/src/shared/trk/trkdevice.cpp b/src/shared/trk/trkdevice.cpp
index 0815ef4dcd7c60636f722f6ec381b14edba0fab5..0da1a79d027db5668c22a9a6c26142c6b57aff4a 100644
--- a/src/shared/trk/trkdevice.cpp
+++ b/src/shared/trk/trkdevice.cpp
@@ -1031,7 +1031,7 @@ void TrkDevice::setVerbose(int b)
 void TrkDevice::slotMessageReceived(const trk::TrkResult &result, const QByteArray &rawData)
 {
     d->writerThread->slotHandleResult(result);
-    if (d->verbose)
+    if (d->verbose > 1)
         qDebug() << "Received: " << result.toString();
     emit messageReceived(result);    
     if (!rawData.isEmpty())