aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVratko Polak <vrpolak@cisco.com>2019-11-29 15:55:43 +0100
committerVratko Polak <vrpolak@cisco.com>2019-12-05 10:29:25 +0100
commit1d9a0ce311d15403432574ab0473274ae0a739fe (patch)
treecc597434e4aa14355cfb2605677b461a18077a80
parent4bddfe8cb71f01a9da6b8c640e4af8436b9f0a4f (diff)
Use new gdb commands for core dump examination
Change-Id: I96f40fa816055a656209cbbcae8259a74cc4bd80 Signed-off-by: Vratko Polak <vrpolak@cisco.com>
-rw-r--r--resources/libraries/python/CoreDumpUtil.py14
-rw-r--r--resources/tools/scripts/gdb-commands35
2 files changed, 42 insertions, 7 deletions
diff --git a/resources/libraries/python/CoreDumpUtil.py b/resources/libraries/python/CoreDumpUtil.py
index 9d9369aa56..76084a3cba 100644
--- a/resources/libraries/python/CoreDumpUtil.py
+++ b/resources/libraries/python/CoreDumpUtil.py
@@ -118,7 +118,7 @@ class CoreDumpUtil:
self.enable_coredump_limit(node, vpp_pid)
def get_core_files_on_all_nodes(self, nodes, disable_on_success=True):
- """Process all core files and remove the original core files on al
+ """Process all core files and remove the original core files on all
nodes.
:param nodes: Nodes in the topology.
@@ -128,12 +128,12 @@ class CoreDumpUtil:
:type disable_on_success: bool
"""
for node in nodes.values():
- command = f"for f in {Constants.CORE_DUMP_DIR}/*.core; do " \
- f"sudo gdb /usr/bin/vpp ${{f}} " \
- f"--eval-command=\"set pagination off\" " \
- f"--eval-command=\"thread apply all bt\" " \
- f"--eval-command=\"quit\"; " \
- f"sudo rm -f ${{f}}; done"
+ command = (
+ f"for f in {Constants.CORE_DUMP_DIR}/*.core; do sudo gdb"
+ f" /usr/bin/vpp ${{f}} -ex 'source -v {Constants.REMOTE_FW_DIR}"
+ f"/resources/tools/scripts/gdb-commands' -ex quit;"
+ f" sudo rm -f ${{f}}; done"
+ )
try:
exec_cmd_no_error(node, command, timeout=3600)
if disable_on_success:
diff --git a/resources/tools/scripts/gdb-commands b/resources/tools/scripts/gdb-commands
new file mode 100644
index 0000000000..419dca934b
--- /dev/null
+++ b/resources/tools/scripts/gdb-commands
@@ -0,0 +1,35 @@
+# Copyright (c) 2019 Cisco and/or its affiliates.
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at:
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Most of the content of this file has been copied from:
+# http://stdio.be/vpp/gdb-commands.txt
+
+# Usage:
+# gdb ${BINFILE} ${CORE} -ex 'source -v gdb-commands' -ex quit
+
+set pagination off
+thread apply all bt
+
+define printstack
+ set $i=0
+ while $i < 15
+ frame $i
+ x/i $pc
+ info locals
+ info reg
+ set $i = $i + 1
+ end
+end
+thread apply all printstack
+
+# info proc mappings