From 1d9a0ce311d15403432574ab0473274ae0a739fe Mon Sep 17 00:00:00 2001 From: Vratko Polak Date: Fri, 29 Nov 2019 15:55:43 +0100 Subject: [PATCH] Use new gdb commands for core dump examination Change-Id: I96f40fa816055a656209cbbcae8259a74cc4bd80 Signed-off-by: Vratko Polak --- resources/libraries/python/CoreDumpUtil.py | 14 ++++++------ resources/tools/scripts/gdb-commands | 35 ++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 resources/tools/scripts/gdb-commands 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 -- 2.16.6