aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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