From c1124a4f8a6298fd8753b4fdafca6befb10c0c8e Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Mon, 6 Apr 2009 14:33:45 +0200 Subject: [PATCH] debugger: work on gdbmi test cases --- src/plugins/debugger/gdbmi.cpp | 106 ++++++++++++++++----------------- tests/auto/debugger/main.cpp | 62 +++++-------------- 2 files changed, 66 insertions(+), 102 deletions(-) diff --git a/src/plugins/debugger/gdbmi.cpp b/src/plugins/debugger/gdbmi.cpp index febf3841f8f..5f9597a6563 100644 --- a/src/plugins/debugger/gdbmi.cpp +++ b/src/plugins/debugger/gdbmi.cpp @@ -115,18 +115,18 @@ void GdbMi::parseValue(const char *&from, const char *to) { //qDebug() << "parseValue: " << QByteArray::fromUtf16(from, to - from); switch (*from) { - case '{': - parseTuple(from, to); - break; - case '[': - parseList(from, to); - break; - case '"': - m_type = Const; - m_data = parseCString(from, to); - break; - default: - break; + case '{': + parseTuple(from, to); + break; + case '[': + parseList(from, to); + break; + case '"': + m_type = Const; + m_data = parseCString(from, to); + break; + default: + break; } } @@ -215,48 +215,46 @@ QByteArray GdbMi::toString(bool multiline, int indent) const { QByteArray result; switch (m_type) { - case Invalid: - if (multiline) { - result += ind(indent) + "Invalid\n"; - } else { - result += "Invalid"; - } - break; - case Const: - if (!m_name.isEmpty()) - result += m_name + "="; - if (multiline) { - result += "\"" + m_data + "\""; - } else { - result += "\"" + m_data + "\""; - } - break; - case Tuple: - if (!m_name.isEmpty()) - result += m_name + "="; - if (multiline) { - result += "{\n"; - dumpChildren(&result, multiline, indent + 1); - result += '\n' + ind(indent) + "}"; - } else { - result += "{"; - dumpChildren(&result, multiline, indent + 1); - result += "}"; - } - break; - case List: - if (!m_name.isEmpty()) - result += m_name + "="; - if (multiline) { - result += "[\n"; - dumpChildren(&result, multiline, indent + 1); - result += '\n' + ind(indent) + "]"; - } else { - result += "["; - dumpChildren(&result, multiline, indent + 1); - result += "]"; - } - break; + case Invalid: + if (multiline) + result += ind(indent) + "Invalid\n"; + else + result += "Invalid"; + break; + case Const: + if (!m_name.isEmpty()) + result += m_name + "="; + if (multiline) + result += "\"" + m_data + "\""; + else + result += "\"" + m_data + "\""; + break; + case Tuple: + if (!m_name.isEmpty()) + result += m_name + "="; + if (multiline) { + result += "{\n"; + dumpChildren(&result, multiline, indent + 1); + result += '\n' + ind(indent) + "}"; + } else { + result += "{"; + dumpChildren(&result, multiline, indent + 1); + result += "}"; + } + break; + case List: + if (!m_name.isEmpty()) + result += m_name + "="; + if (multiline) { + result += "[\n"; + dumpChildren(&result, multiline, indent + 1); + result += '\n' + ind(indent) + "]"; + } else { + result += "["; + dumpChildren(&result, multiline, indent + 1); + result += "]"; + } + break; } return result; } diff --git a/tests/auto/debugger/main.cpp b/tests/auto/debugger/main.cpp index e4e4a801c26..69039aedaf1 100644 --- a/tests/auto/debugger/main.cpp +++ b/tests/auto/debugger/main.cpp @@ -8,51 +8,50 @@ using namespace Debugger; using namespace Debugger::Internal; static const char test1[] = - "1^done,stack=[frame={level=\"0\",addr=\"0x00000000004061ca\"," + "[frame={level=\"0\",addr=\"0x00000000004061ca\"," "func=\"main\",file=\"test1.cpp\"," "fullname=\"/home/apoenitz/work/test1/test1.cpp\",line=\"209\"}]"; static const char test2[] = - "2^done,stack=[frame={level=\"0\",addr=\"0x00002ac058675840\"," + "[frame={level=\"0\",addr=\"0x00002ac058675840\"," "func=\"QApplication\",file=\"/home/apoenitz/dev/qt/src/gui/kernel/qapplication.cpp\"," "fullname=\"/home/apoenitz/dev/qt/src/gui/kernel/qapplication.cpp\",line=\"592\"}," "frame={level=\"1\",addr=\"0x00000000004061e0\",func=\"main\",file=\"test1.cpp\"," - "fullname=\"/home/apoenitz/work/test1/test1.cpp\",line=\"209\"}]\n"; + "fullname=\"/home/apoenitz/work/test1/test1.cpp\",line=\"209\"}]"; static const char test3[] = - "3^done,stack=[frame={level=\"0\",addr=\"0x00000000004061ca\"," + "[stack={frame={level=\"0\",addr=\"0x00000000004061ca\"," "func=\"main\",file=\"test1.cpp\"," - "fullname=\"/home/apoenitz/work/test1/test1.cpp\",line=\"209\"}]\n"; + "fullname=\"/home/apoenitz/work/test1/test1.cpp\",line=\"209\"}}]"; static const char test4[] = - "&\"source /home/apoenitz/dev/ide/main/bin/gdb/qt4macros\\n\"\n" + "&\"source /home/apoenitz/dev/ide/main/bin/gdb/qt4macros\\n\"" "4^done\n"; static const char test5[] = - "1*stopped,reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"1\"," + "[reason=\"breakpoint-hit\",bkptno=\"1\",thread-id=\"1\"," "frame={addr=\"0x0000000000405738\",func=\"main\"," "args=[{name=\"argc\",value=\"1\"},{name=\"argv\",value=\"0x7fff1ac78f28\"}]," "file=\"test1.cpp\",fullname=\"/home/apoenitz/work/test1/test1.cpp\"," - "line=\"209\"}\n"; + "line=\"209\"}]"; -static const char test6[] = - "{u = {u = 2048, v = 16788279, w = -689265400}, a = 1, b = -689265424, c = 11063, s = {static null = {<No data fields>}, static shared_null = {ref = {value = 2}, alloc = 0, size = 0, data = 0x6098da, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {value = 1}, alloc = 0, size = 0, data = 0x2b37d84f8fba, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x6098c0, static codecForCStrings = 0x0}}"; static const char test8[] = - "8^done,data={locals={{name=\"a\"},{name=\"w\"}}}\n"; + "[data={locals={{name=\"a\"},{name=\"w\"}}}]"; static const char test9[] = - "9^done,data={locals=[name=\"baz\",name=\"urgs\",name=\"purgs\"]}\n"; + "[data={locals=[name=\"baz\",name=\"urgs\",name=\"purgs\"]}]"; static const char test10[] = - "16^done,name=\"urgs\",numchild=\"1\",type=\"Urgs\"\n"; + "[name=\"urgs\",numchild=\"1\",type=\"Urgs\"]"; static const char test11[] = "[{name=\"size\",value=\"1\",type=\"size_t\",readonly=\"true\"}," "{name=\"0\",value=\"one\",type=\"QByteArray\"}]"; static const char test12[] = - "{iname=\"local.hallo\",value=\"\\\"\\\"\",type=\"QByteArray\",numchild=\"0\"}"; + "[{iname=\"local.hallo\",value=\"\\\"\\\"\",type=\"QByteArray\"," + "numchild=\"0\"}]"; class tst_Debugger : public QObject { @@ -67,45 +66,12 @@ public: '\n' + QString(input)); } - void parse(const QByteArray &str) - { - QByteArray result; - result += "\n "; - int indent = 0; - int from = 0; - int to = str.size(); - if (str.size() && str[0] == '{' /*'}'*/) { - ++from; - --to; - } - for (int i = from; i < to; ++i) { - if (str[i] == '{') - result += "{\n" + QByteArray(2*++indent + 1, ' '); - else if (str[i] == '}') { - if (!result.isEmpty() && result[result.size() - 1] != '\n') - result += "\n"; - result += QByteArray(2*--indent + 1, ' ') + "}\n"; - } - else if (str[i] == ',') { - if (!result.isEmpty() && result[result.size() - 1] != '\n') - result += "\n"; - result += QByteArray(2*indent, ' '); - } - else - result += str[i]; - } - qDebug() << "result:\n" << result; - } - - - private slots: void mi1() { testMi(test1); } void mi2() { testMi(test2); } void mi3() { testMi(test3); } - void mi4() { testMi(test4); } + //void mi4() { testMi(test4); } void mi5() { testMi(test5); } - void mi6() { testMi(test6); } void mi8() { testMi(test8); } void mi9() { testMi(test9); } void mi10() { testMi(test10); } -- GitLab