diff --git a/src/plugins/debugger/breakpoint.cpp b/src/plugins/debugger/breakpoint.cpp
index 166bebd398ec2fc04524e9e2a6c91111dcda848b..981aed0ba4303826fc4fc081fbceb072f827e6bd 100644
--- a/src/plugins/debugger/breakpoint.cpp
+++ b/src/plugins/debugger/breakpoint.cpp
@@ -176,8 +176,6 @@ BreakpointData *BreakpointData::clone() const
 {
     BreakpointData *data = new BreakpointData();
     data->m_handler = m_handler;
-    data->m_markerFileName = m_markerFileName;
-    data->m_markerLineNumber = m_markerLineNumber;
     data->enabled = enabled;
     data->type = type;
     data->fileName = fileName;
@@ -188,6 +186,15 @@ BreakpointData *BreakpointData::clone() const
     data->threadSpec = threadSpec;
     data->funcName = funcName;
     data->useFullPath = useFullPath;
+    if (isSetByFunction()) {
+        // FIXME: Would removing it be better then leaving this 
+        // "history" around?
+        data->m_markerFileName = m_markerFileName;
+        data->m_markerLineNumber = m_markerLineNumber;
+    } else {
+        data->m_markerFileName = fileName;
+        data->m_markerLineNumber = lineNumber.toInt();
+    }
     return data;
 }
 
diff --git a/src/plugins/debugger/breakpoint.h b/src/plugins/debugger/breakpoint.h
index 98c569cdf6551c279fa4b7984450edbe94ac5fa8..7177c17142fc8b3ba792db908164428756f5abf0 100644
--- a/src/plugins/debugger/breakpoint.h
+++ b/src/plugins/debugger/breakpoint.h
@@ -112,6 +112,9 @@ public:
     void setMarkerLineNumber(int lineNumber);
     int markerLineNumber() const { return m_markerLineNumber; }
 
+    bool isSetByFunction() const { return !funcName.isEmpty(); }
+    bool isSetByFileAndLine() const { return !fileName.isEmpty(); }
+
 private:
     // Taken from either user input or gdb responses.
     QString m_markerFileName; // Used to locate the marker.
diff --git a/tests/manual/gdbdebugger/simple/app.cpp b/tests/manual/gdbdebugger/simple/app.cpp
index b90b6b54e3f056fc3a32e2326a3b9ba25c7a86d7..939f34a4887de094dc861a68bea4deb3f26b57a7 100644
--- a/tests/manual/gdbdebugger/simple/app.cpp
+++ b/tests/manual/gdbdebugger/simple/app.cpp
@@ -1869,7 +1869,6 @@ int main(int argc, char *argv[])
     //testWCout0();
     //testWCout();
     testColor();
-    return 0;
     testQRegion();
     testStuff();
     testPeekAndPoke3();
@@ -1950,7 +1949,6 @@ int main(int argc, char *argv[])
 
     testQObject(argc, argv);
 
-
     //QColor color(255,128,10);
     //QFont font;