nxgdb/dmesg.py:add use gdb dump rpmsg_syslog
(gdb) dmesg RAM log: [01/06 02:27:05] [ 1] [cp] reset mode:1 ... [01/06 02:27:05] [ 1] [cp] Dump board_reset backtrace: [01/06 02:27:05] [ 1] [cp] sched_dumpstack: backtrace| 1: 0x10a0d880 0x10a0a78e 0x10a0d8b6 0x10a0f29e 0x10a0f182 [01/06 02:27:05] [ 1] [cp] Time: Mon Jan 6 02:27:05 2025 ---END of RAMLOG RPMSG syslog: dumpstack: backtrace|10: 0x10a0d880 0x10a0a78e 0x10a110de 0x10a3a482 0x10a3c4fa 0x10a23358 0x10a4aaee 0x10a34a7c [01/06 02:27:05] [ 1] [cp] sched_dumpstack: backtrace|10: 0x10a2330a 0x10a0f1f4 [01/06 02:27:05] [ 1] [cp] sched_dumpstack: backtrace|11: 0x10a0d880 0x10a0a78e 0x10a110de 0x10a3a482 0x10a15152 0x10a0f182 [01/06 02:27:05] [ 1] [cp] sched_dumpstack: backtrace|15: 0x10a0d880 0x10a0a78e 0x10a0d8b6 0x10a174d0 0x10a3a482 0x10a3c4fa 0x10a222ee 0x10a18c66 [01/06 02:27:05] [ 1] [cp] Time: Mon Jan 6 02:27:05 2025 ---END of RPMSG SYSLOG--- Signed-off-by: yangao1 <yangao1@xiaomi.com>
This commit is contained in:
parent
d1be769038
commit
ded5a6aae5
1 changed files with 24 additions and 11 deletions
|
|
@ -25,18 +25,17 @@ import gdb
|
|||
from . import utils
|
||||
|
||||
CONFIG_RAMLOG_SYSLOG = utils.get_symbol_value("CONFIG_RAMLOG_SYSLOG")
|
||||
CONFIG_SYSLOG_RPMSG = utils.get_symbol_value("CONFIG_SYSLOG_RPMSG")
|
||||
|
||||
|
||||
class Dmesg(gdb.Command):
|
||||
def __init__(self):
|
||||
if CONFIG_RAMLOG_SYSLOG:
|
||||
if CONFIG_RAMLOG_SYSLOG or CONFIG_SYSLOG_RPMSG:
|
||||
super().__init__("dmesg", gdb.COMMAND_USER)
|
||||
|
||||
def _get_buf(self):
|
||||
sysdev = utils.gdb_eval_or_none("g_sysdev")
|
||||
if not sysdev:
|
||||
gdb.write("RAM log not available.\n")
|
||||
return None
|
||||
def _get_ramlog(self):
|
||||
if not (sysdev := utils.gdb_eval_or_none("g_sysdev")):
|
||||
return "RAM log not available"
|
||||
|
||||
rl_header = sysdev["rl_header"]
|
||||
rl_bufsize = sysdev["rl_bufsize"]
|
||||
|
|
@ -55,17 +54,31 @@ class Dmesg(gdb.Command):
|
|||
|
||||
return buf.decode("utf-8", errors="replace")
|
||||
|
||||
def _get_rpmsg_syslog(self):
|
||||
if not (priv := utils.gdb_eval_or_none("g_syslog_rpmsg")):
|
||||
return "RPMsg syslog not avaliable"
|
||||
|
||||
buffer = bytes(gdb.selected_inferior().read_memory(priv.buffer, priv.size))
|
||||
buf = buffer.replace(b"\0", "␀".encode("utf-8"))
|
||||
return buf.decode("utf-8", errors="replace")
|
||||
|
||||
def diagnose(self, *args, **kwargs):
|
||||
buf = self._get_buf()
|
||||
ramlog = self._get_ramlog()
|
||||
rpmsg_syslog = self._get_rpmsg_syslog()
|
||||
|
||||
return {
|
||||
"title": "RAM log",
|
||||
"title": "RAM log and RPMsg Syslog",
|
||||
"summary": (
|
||||
f"Buffer length:{len(buf)} bytes" if buf else "Buffer not available"
|
||||
f"RAM log length: {len(ramlog)} bytes. RPMSG log length:{len(rpmsg_syslog)} bytes."
|
||||
),
|
||||
"result": "info",
|
||||
"command": "dmesg",
|
||||
"message": buf,
|
||||
"message": f"RAM log:\n{ramlog}\n RPMSG syslog:{rpmsg_syslog}",
|
||||
}
|
||||
|
||||
def invoke(self, args, from_tty):
|
||||
gdb.write(f"{self._get_buf()}\n")
|
||||
ramlog = self._get_ramlog()
|
||||
rpmsg_syslog = self._get_rpmsg_syslog()
|
||||
|
||||
print(f"RAM log:{ramlog}\n---END of RAMLOG")
|
||||
print(f"RPMSG syslog:{rpmsg_syslog}\n---END of RPMSG SYSLOG---")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue