Exclude main and std:: entries from gdb backtrace for clarity 12/74512/1
authorKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Mon, 13 Jun 2016 12:36:51 +0000 (14:36 +0200)
committerKrzysztof Jackiewicz <k.jackiewicz@samsung.com>
Tue, 14 Jun 2016 11:25:56 +0000 (13:25 +0200)
Change-Id: I235d129f5aa7bc840fca262ffc1df42026f5968d

src/framework/src/gdbbacktrace.cpp

index 7443252a27130ab3aee6b4e81b70f033cbe3540e..44e00afea5ec122f94322ac81487195081d2cc72 100644 (file)
@@ -43,7 +43,7 @@
 namespace DPL {
 namespace {
 
-const std::string FRAME_PATTERN_DPL("in DPL::Test");
+const char *FRAME_PATTERN = "in DPL::Test|in std::|in main";
 const std::string FRAME_GDBBACKTRACE("in DPL::gdbbacktrace");
 const std::string DEV_NULL("/dev/null");
 const std::string TMP_FILE_PREFIX("/tmp/security-tests_gdbbacktrace-");
@@ -57,12 +57,13 @@ void printColor(const char *err, int errnoNumber = 0)
 
 bool backtraceParseLine(const std::string &line, std::ostream &result, size_t lineNumber)
 {
-    if (line.find(FRAME_PATTERN_DPL, 0) != std::string::npos)
+    std::smatch m;
+    std::regex frame_expr(FRAME_PATTERN);
+    if (std::regex_search(line, m, frame_expr))
         return false;
 
-    std::smatch m;
     std::regex expr("^#\\d+\\s+0x[0-9a-fA-F]+\\s+(.+)");
-    if (!std::regex_search (line, m, expr))
+    if (!std::regex_search(line, m, expr))
         return false;
 
     result << "#" << std::left << std::setw(2) << lineNumber << " " << m[m.size()-1] << std::endl;