Merge branch 'feature/py3_espcoredump' into 'master'
espcoredump: Add tests and Python3 support See merge request idf/esp-idf!3212
This commit is contained in:
commit
31c14a5ee4
8 changed files with 836 additions and 51 deletions
|
@ -446,6 +446,18 @@ test_esp_err_to_name_on_host:
|
||||||
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./gen_esp_err_to_name.py
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./gen_esp_err_to_name.py
|
||||||
- git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found between running under Python 2 and 3.'; exit 1)
|
- git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found between running under Python 2 and 3.'; exit 1)
|
||||||
|
|
||||||
|
test_espcoredump:
|
||||||
|
<<: *host_test_template
|
||||||
|
artifacts:
|
||||||
|
when: always
|
||||||
|
paths:
|
||||||
|
- components/espcoredump/test/.coverage
|
||||||
|
- components/espcoredump/test/output
|
||||||
|
expire_in: 1 week
|
||||||
|
script:
|
||||||
|
- cd components/espcoredump/test/
|
||||||
|
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_espcoredump.sh
|
||||||
|
|
||||||
push_to_github:
|
push_to_github:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG
|
||||||
|
|
|
@ -2,6 +2,19 @@
|
||||||
#
|
#
|
||||||
# ESP32 core dump Utility
|
# ESP32 core dump Utility
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
from __future__ import division
|
||||||
|
try:
|
||||||
|
from builtins import zip
|
||||||
|
from builtins import str
|
||||||
|
from builtins import range
|
||||||
|
from past.utils import old_div
|
||||||
|
from builtins import object
|
||||||
|
except ImportError:
|
||||||
|
print('Import has failed probably because of the missing "future" package. Please install all the packages for '
|
||||||
|
'interpreter {} from the $IDF_PATH/requirements.txt file.'.format(sys.executable))
|
||||||
|
sys.exit(1)
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
import argparse
|
import argparse
|
||||||
|
@ -19,7 +32,7 @@ if idf_path:
|
||||||
try:
|
try:
|
||||||
import esptool
|
import esptool
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print "Esptool is not found! Set proper $IDF_PATH in environment."
|
print("Esptool is not found! Set proper $IDF_PATH in environment.")
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
||||||
__version__ = "0.2-dev"
|
__version__ = "0.2-dev"
|
||||||
|
@ -103,7 +116,7 @@ class Elf32FileHeader(BinStruct):
|
||||||
super(Elf32FileHeader, self).__init__(buf)
|
super(Elf32FileHeader, self).__init__(buf)
|
||||||
if buf is None:
|
if buf is None:
|
||||||
# Fill in sane ELF header for LSB32
|
# Fill in sane ELF header for LSB32
|
||||||
self.e_ident = "\x7fELF\1\1\1\0\0\0\0\0\0\0\0\0"
|
self.e_ident = b"\x7fELF\1\1\1\0\0\0\0\0\0\0\0\0"
|
||||||
self.e_version = ESPCoreDumpElfFile.EV_CURRENT
|
self.e_version = ESPCoreDumpElfFile.EV_CURRENT
|
||||||
self.e_ehsize = self.sizeof()
|
self.e_ehsize = self.sizeof()
|
||||||
|
|
||||||
|
@ -292,7 +305,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
|
||||||
except struct.error as e:
|
except struct.error as e:
|
||||||
raise ESPCoreDumpError("Failed to read a valid ELF header from %s: %s" % (self.name, e))
|
raise ESPCoreDumpError("Failed to read a valid ELF header from %s: %s" % (self.name, e))
|
||||||
|
|
||||||
if ident[0] != '\x7f' or ident[1:4] != 'ELF':
|
if bytearray([ident[0]]) != b'\x7f' or ident[1:4] != b'ELF':
|
||||||
raise ESPCoreDumpError("%s has invalid ELF magic header" % self.name)
|
raise ESPCoreDumpError("%s has invalid ELF magic header" % self.name)
|
||||||
if machine != self.EM_XTENSA:
|
if machine != self.EM_XTENSA:
|
||||||
raise ESPCoreDumpError("%s does not appear to be an Xtensa ELF file. e_machine=%04x" % (self.name, machine))
|
raise ESPCoreDumpError("%s does not appear to be an Xtensa ELF file. e_machine=%04x" % (self.name, machine))
|
||||||
|
@ -314,7 +327,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
|
||||||
if len(section_header) == 0:
|
if len(section_header) == 0:
|
||||||
raise ESPCoreDumpError("No section header found at offset %04x in ELF file." % section_header_offs)
|
raise ESPCoreDumpError("No section header found at offset %04x in ELF file." % section_header_offs)
|
||||||
if len(section_header) % LEN_SEC_HEADER != 0:
|
if len(section_header) % LEN_SEC_HEADER != 0:
|
||||||
print 'WARNING: Unexpected ELF section header length %04x is not mod-%02x' % (len(section_header),LEN_SEC_HEADER)
|
print('WARNING: Unexpected ELF section header length %04x is not mod-%02x' % (len(section_header),LEN_SEC_HEADER))
|
||||||
|
|
||||||
# walk through the section header and extract all sections
|
# walk through the section header and extract all sections
|
||||||
section_header_offsets = range(0, len(section_header), LEN_SEC_HEADER)
|
section_header_offsets = range(0, len(section_header), LEN_SEC_HEADER)
|
||||||
|
@ -330,7 +343,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
|
||||||
raise ESPCoreDumpError("ELF file has no STRTAB section at shstrndx %d" % shstrndx)
|
raise ESPCoreDumpError("ELF file has no STRTAB section at shstrndx %d" % shstrndx)
|
||||||
_,sec_type,_,_,sec_size,sec_offs = read_section_header(shstrndx * LEN_SEC_HEADER)
|
_,sec_type,_,_,sec_size,sec_offs = read_section_header(shstrndx * LEN_SEC_HEADER)
|
||||||
if sec_type != esptool.ELFFile.SEC_TYPE_STRTAB:
|
if sec_type != esptool.ELFFile.SEC_TYPE_STRTAB:
|
||||||
print 'WARNING: ELF file has incorrect STRTAB section type 0x%02x' % sec_type
|
print('WARNING: ELF file has incorrect STRTAB section type 0x%02x' % sec_type)
|
||||||
f.seek(sec_offs)
|
f.seek(sec_offs)
|
||||||
string_table = f.read(sec_size)
|
string_table = f.read(sec_size)
|
||||||
|
|
||||||
|
@ -338,7 +351,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
|
||||||
# string table section, and actual data for each section from the ELF file itself
|
# string table section, and actual data for each section from the ELF file itself
|
||||||
def lookup_string(offs):
|
def lookup_string(offs):
|
||||||
raw = string_table[offs:]
|
raw = string_table[offs:]
|
||||||
return raw[:raw.index('\x00')]
|
return raw[:raw.index(b'\x00')]
|
||||||
|
|
||||||
def read_data(offs,size):
|
def read_data(offs,size):
|
||||||
f.seek(offs)
|
f.seek(offs)
|
||||||
|
@ -357,7 +370,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
|
||||||
if len(seg_table) == 0:
|
if len(seg_table) == 0:
|
||||||
raise ESPCoreDumpError("No program header table found at offset %04x in ELF file." % seg_table_offs)
|
raise ESPCoreDumpError("No program header table found at offset %04x in ELF file." % seg_table_offs)
|
||||||
if len(seg_table) % LEN_SEG_HEADER != 0:
|
if len(seg_table) % LEN_SEG_HEADER != 0:
|
||||||
print 'WARNING: Unexpected ELF program header table length %04x is not mod-%02x' % (len(seg_table),LEN_SEG_HEADER)
|
print('WARNING: Unexpected ELF program header table length %04x is not mod-%02x' % (len(seg_table),LEN_SEG_HEADER))
|
||||||
|
|
||||||
# walk through the program segment table and extract all segments
|
# walk through the program segment table and extract all segments
|
||||||
seg_table_offs = range(0, len(seg_table), LEN_SEG_HEADER)
|
seg_table_offs = range(0, len(seg_table), LEN_SEG_HEADER)
|
||||||
|
@ -551,7 +564,7 @@ class ESPCoreDumpLoader(object):
|
||||||
os.remove(fname)
|
os.remove(fname)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
if e.errno != errno.ENOENT:
|
if e.errno != errno.ENOENT:
|
||||||
print "Warning failed to remove temp file '%s' (%d)!" % (fname, e.errno)
|
print("Warning failed to remove temp file '%s' (%d)!" % (fname, e.errno))
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
"""Cleans up loader resources
|
"""Cleans up loader resources
|
||||||
|
@ -569,7 +582,7 @@ class ESPCoreDumpLoader(object):
|
||||||
tot_len,task_num,tcbsz = struct.unpack_from(self.ESP32_COREDUMP_HDR_FMT, data)
|
tot_len,task_num,tcbsz = struct.unpack_from(self.ESP32_COREDUMP_HDR_FMT, data)
|
||||||
tcbsz_aligned = tcbsz
|
tcbsz_aligned = tcbsz
|
||||||
if tcbsz_aligned % 4:
|
if tcbsz_aligned % 4:
|
||||||
tcbsz_aligned = 4*(tcbsz_aligned/4 + 1)
|
tcbsz_aligned = 4*(old_div(tcbsz_aligned,4) + 1)
|
||||||
core_off += self.ESP32_COREDUMP_HDR_SZ
|
core_off += self.ESP32_COREDUMP_HDR_SZ
|
||||||
core_elf = ESPCoreDumpElfFile()
|
core_elf = ESPCoreDumpElfFile()
|
||||||
notes = b''
|
notes = b''
|
||||||
|
@ -585,7 +598,7 @@ class ESPCoreDumpLoader(object):
|
||||||
|
|
||||||
stack_len_aligned = stack_len
|
stack_len_aligned = stack_len
|
||||||
if stack_len_aligned % 4:
|
if stack_len_aligned % 4:
|
||||||
stack_len_aligned = 4*(stack_len_aligned/4 + 1)
|
stack_len_aligned = 4*(old_div(stack_len_aligned,4) + 1)
|
||||||
|
|
||||||
core_off += self.ESP32_COREDUMP_TSK_HDR_SZ
|
core_off += self.ESP32_COREDUMP_TSK_HDR_SZ
|
||||||
data = self.read_data(core_off, tcbsz_aligned)
|
data = self.read_data(core_off, tcbsz_aligned)
|
||||||
|
@ -602,7 +615,7 @@ class ESPCoreDumpLoader(object):
|
||||||
try:
|
try:
|
||||||
task_regs = self._get_registers_from_stack(data, stack_end > stack_top)
|
task_regs = self._get_registers_from_stack(data, stack_end > stack_top)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print e
|
print(e)
|
||||||
return None
|
return None
|
||||||
prstatus = XtensaPrStatus()
|
prstatus = XtensaPrStatus()
|
||||||
prstatus.pr_cursig = 0 # TODO: set sig only for current/failed task
|
prstatus.pr_cursig = 0 # TODO: set sig only for current/failed task
|
||||||
|
@ -659,7 +672,7 @@ class ESPCoreDumpFileLoader(ESPCoreDumpLoader):
|
||||||
line = fb64.readline()
|
line = fb64.readline()
|
||||||
if len(line) == 0:
|
if len(line) == 0:
|
||||||
break
|
break
|
||||||
data = base64.standard_b64decode(line.rstrip('\r\n'))
|
data = base64.standard_b64decode(line.rstrip(b'\r\n'))
|
||||||
fcore.write(data)
|
fcore.write(data)
|
||||||
fcore.close()
|
fcore.close()
|
||||||
fcore = open(self.fcore_name, 'rb')
|
fcore = open(self.fcore_name, 'rb')
|
||||||
|
@ -717,18 +730,18 @@ class ESPCoreDumpFlashLoader(ESPCoreDumpLoader):
|
||||||
tool_args[-1] = self.fcore_name
|
tool_args[-1] = self.fcore_name
|
||||||
# read core dump length
|
# read core dump length
|
||||||
et_out = subprocess.check_output(tool_args)
|
et_out = subprocess.check_output(tool_args)
|
||||||
print et_out
|
print(et_out.decode('utf-8'))
|
||||||
f = os.fdopen(fhnd, 'rb')
|
f = os.fdopen(fhnd, 'rb')
|
||||||
self.dump_sz = self._read_core_dump_length(f)
|
self.dump_sz = self._read_core_dump_length(f)
|
||||||
# read core dump
|
# read core dump
|
||||||
tool_args[-2] = str(self. dump_sz)
|
tool_args[-2] = str(self. dump_sz)
|
||||||
et_out = subprocess.check_output(tool_args)
|
et_out = subprocess.check_output(tool_args)
|
||||||
print et_out
|
print(et_out.decode('utf-8'))
|
||||||
except subprocess.CalledProcessError as e:
|
except subprocess.CalledProcessError as e:
|
||||||
print "esptool script execution failed with err %d" % e.returncode
|
print("esptool script execution failed with err %d" % e.returncode)
|
||||||
print "Command ran: '%s'" % e.cmd
|
print("Command ran: '%s'" % e.cmd)
|
||||||
print "Command out:"
|
print("Command out:")
|
||||||
print e.output
|
print(e.output)
|
||||||
if self.fcore_name:
|
if self.fcore_name:
|
||||||
self.remove_tmp_file(self.fcore_name)
|
self.remove_tmp_file(self.fcore_name)
|
||||||
raise e
|
raise e
|
||||||
|
@ -773,7 +786,7 @@ class GDBMIOutRecordHandler(object):
|
||||||
"""Base method to execute GDB/MI output record handler function
|
"""Base method to execute GDB/MI output record handler function
|
||||||
"""
|
"""
|
||||||
if self.verbose:
|
if self.verbose:
|
||||||
print "%s.execute: [[%s]]" % (self.__class__.__name__, ln)
|
print("%s.execute: [[%s]]" % (self.__class__.__name__, ln))
|
||||||
|
|
||||||
|
|
||||||
class GDBMIOutStreamHandler(GDBMIOutRecordHandler):
|
class GDBMIOutStreamHandler(GDBMIOutRecordHandler):
|
||||||
|
@ -823,7 +836,7 @@ class GDBMIResultHandler(GDBMIOutRecordHandler):
|
||||||
if self.result_str.startswith(','):
|
if self.result_str.startswith(','):
|
||||||
self.result_str = self.result_str[1:]
|
self.result_str = self.result_str[1:]
|
||||||
else:
|
else:
|
||||||
print "Invalid result format: '%s'" % ln
|
print("Invalid result format: '%s'" % ln)
|
||||||
else:
|
else:
|
||||||
self.result_str = ''
|
self.result_str = ''
|
||||||
return True
|
return True
|
||||||
|
@ -843,7 +856,7 @@ class GDBMIResultHandler(GDBMIOutRecordHandler):
|
||||||
return
|
return
|
||||||
if self._parse_rc(ln, self.RC_EXIT):
|
if self._parse_rc(ln, self.RC_EXIT):
|
||||||
return
|
return
|
||||||
print "Unknown GDB/MI result: '%s'" % ln
|
print("Unknown GDB/MI result: '%s'" % ln)
|
||||||
|
|
||||||
|
|
||||||
class GDBMIStreamConsoleHandler(GDBMIOutStreamHandler):
|
class GDBMIStreamConsoleHandler(GDBMIOutStreamHandler):
|
||||||
|
@ -873,7 +886,7 @@ def dbg_corefile(args):
|
||||||
loader = ESPCoreDumpFlashLoader(args.off, port=args.port)
|
loader = ESPCoreDumpFlashLoader(args.off, port=args.port)
|
||||||
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
||||||
if not core_fname:
|
if not core_fname:
|
||||||
print "Failed to create corefile!"
|
print("Failed to create corefile!")
|
||||||
loader.cleanup()
|
loader.cleanup()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
@ -882,7 +895,7 @@ def dbg_corefile(args):
|
||||||
loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64')
|
loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64')
|
||||||
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
||||||
if not core_fname:
|
if not core_fname:
|
||||||
print "Failed to create corefile!"
|
print("Failed to create corefile!")
|
||||||
loader.cleanup()
|
loader.cleanup()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -902,7 +915,7 @@ def dbg_corefile(args):
|
||||||
if not args.core and not args.save_core:
|
if not args.core and not args.save_core:
|
||||||
loader.remove_tmp_file(core_fname)
|
loader.remove_tmp_file(core_fname)
|
||||||
loader.cleanup()
|
loader.cleanup()
|
||||||
print 'Done!'
|
print('Done!')
|
||||||
|
|
||||||
|
|
||||||
def info_corefile(args):
|
def info_corefile(args):
|
||||||
|
@ -915,7 +928,7 @@ def info_corefile(args):
|
||||||
|
|
||||||
def gdbmi_read2prompt(f, out_handlers=None):
|
def gdbmi_read2prompt(f, out_handlers=None):
|
||||||
while True:
|
while True:
|
||||||
ln = f.readline().rstrip(' \r\n')
|
ln = f.readline().decode('utf-8').rstrip(' \r\n')
|
||||||
if ln == '(gdb)':
|
if ln == '(gdb)':
|
||||||
break
|
break
|
||||||
elif len(ln) == 0:
|
elif len(ln) == 0:
|
||||||
|
@ -948,15 +961,15 @@ def info_corefile(args):
|
||||||
def gdbmi_getinfo(p, handlers, gdb_cmd):
|
def gdbmi_getinfo(p, handlers, gdb_cmd):
|
||||||
for t in handlers:
|
for t in handlers:
|
||||||
handlers[t].result_class = None
|
handlers[t].result_class = None
|
||||||
p.stdin.write("-interpreter-exec console \"%s\"\n" % gdb_cmd)
|
p.stdin.write(bytearray("-interpreter-exec console \"%s\"\n" % gdb_cmd, encoding='utf-8'))
|
||||||
gdbmi_read2prompt(p.stdout, handlers)
|
gdbmi_read2prompt(p.stdout, handlers)
|
||||||
if not handlers[GDBMIResultHandler.TAG].result_class or handlers[GDBMIResultHandler.TAG].result_class == GDBMIResultHandler.RC_EXIT:
|
if not handlers[GDBMIResultHandler.TAG].result_class or handlers[GDBMIResultHandler.TAG].result_class == GDBMIResultHandler.RC_EXIT:
|
||||||
print "GDB exited (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str)
|
print("GDB exited (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str))
|
||||||
p.wait()
|
p.wait()
|
||||||
print "Problem occured! GDB exited, restart it."
|
print("Problem occured! GDB exited, restart it.")
|
||||||
p = gdbmi_start(handlers, [])
|
p = gdbmi_start(handlers, [])
|
||||||
elif handlers[GDBMIResultHandler.TAG].result_class != GDBMIResultHandler.RC_DONE:
|
elif handlers[GDBMIResultHandler.TAG].result_class != GDBMIResultHandler.RC_DONE:
|
||||||
print "GDB/MI command failed (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str)
|
print("GDB/MI command failed (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str))
|
||||||
return p
|
return p
|
||||||
|
|
||||||
loader = None
|
loader = None
|
||||||
|
@ -965,7 +978,7 @@ def info_corefile(args):
|
||||||
loader = ESPCoreDumpFlashLoader(args.off, port=args.port)
|
loader = ESPCoreDumpFlashLoader(args.off, port=args.port)
|
||||||
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
||||||
if not core_fname:
|
if not core_fname:
|
||||||
print "Failed to create corefile!"
|
print("Failed to create corefile!")
|
||||||
loader.cleanup()
|
loader.cleanup()
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
@ -974,7 +987,7 @@ def info_corefile(args):
|
||||||
loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64')
|
loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64')
|
||||||
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
|
||||||
if not core_fname:
|
if not core_fname:
|
||||||
print "Failed to create corefile!"
|
print("Failed to create corefile!")
|
||||||
loader.cleanup()
|
loader.cleanup()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -1028,43 +1041,43 @@ def info_corefile(args):
|
||||||
handlers[GDBMIStreamConsoleHandler.TAG] = GDBMIStreamConsoleHandler(None, verbose=False)
|
handlers[GDBMIStreamConsoleHandler.TAG] = GDBMIStreamConsoleHandler(None, verbose=False)
|
||||||
p = gdbmi_start(handlers, [rom_sym_cmd])
|
p = gdbmi_start(handlers, [rom_sym_cmd])
|
||||||
|
|
||||||
print "==============================================================="
|
print("===============================================================")
|
||||||
print "==================== ESP32 CORE DUMP START ===================="
|
print("==================== ESP32 CORE DUMP START ====================")
|
||||||
|
|
||||||
handlers[GDBMIResultHandler.TAG].result_class = None
|
handlers[GDBMIResultHandler.TAG].result_class = None
|
||||||
handlers[GDBMIStreamConsoleHandler.TAG].func = gdbmi_console_stream_handler
|
handlers[GDBMIStreamConsoleHandler.TAG].func = gdbmi_console_stream_handler
|
||||||
print "\n================== CURRENT THREAD REGISTERS ==================="
|
print("\n================== CURRENT THREAD REGISTERS ===================")
|
||||||
p = gdbmi_getinfo(p, handlers, "info registers")
|
p = gdbmi_getinfo(p, handlers, "info registers")
|
||||||
print "\n==================== CURRENT THREAD STACK ====================="
|
print("\n==================== CURRENT THREAD STACK =====================")
|
||||||
p = gdbmi_getinfo(p, handlers, "bt")
|
p = gdbmi_getinfo(p, handlers, "bt")
|
||||||
print "\n======================== THREADS INFO ========================="
|
print("\n======================== THREADS INFO =========================")
|
||||||
p = gdbmi_getinfo(p, handlers, "info threads")
|
p = gdbmi_getinfo(p, handlers, "info threads")
|
||||||
print "\n======================= ALL MEMORY REGIONS ========================"
|
print("\n======================= ALL MEMORY REGIONS ========================")
|
||||||
print "Name Address Size Attrs"
|
print("Name Address Size Attrs")
|
||||||
for ms in merged_segs:
|
for ms in merged_segs:
|
||||||
print "%s 0x%x 0x%x %s" % (ms[0], ms[1], ms[2], ms[3])
|
print("%s 0x%x 0x%x %s" % (ms[0], ms[1], ms[2], ms[3]))
|
||||||
for cs in core_segs:
|
for cs in core_segs:
|
||||||
# core dump exec segments are from ROM, other are belong to tasks (TCB or stack)
|
# core dump exec segments are from ROM, other are belong to tasks (TCB or stack)
|
||||||
if cs.flags & ESPCoreDumpSegment.PF_X:
|
if cs.flags & ESPCoreDumpSegment.PF_X:
|
||||||
seg_name = 'rom.text'
|
seg_name = 'rom.text'
|
||||||
else:
|
else:
|
||||||
seg_name = 'tasks.data'
|
seg_name = 'tasks.data'
|
||||||
print ".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str())
|
print(".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str()))
|
||||||
if args.print_mem:
|
if args.print_mem:
|
||||||
print "\n====================== CORE DUMP MEMORY CONTENTS ========================"
|
print("\n====================== CORE DUMP MEMORY CONTENTS ========================")
|
||||||
for cs in core_elf.program_segments:
|
for cs in core_elf.program_segments:
|
||||||
# core dump exec segments are from ROM, other are belong to tasks (TCB or stack)
|
# core dump exec segments are from ROM, other are belong to tasks (TCB or stack)
|
||||||
if cs.flags & ESPCoreDumpSegment.PF_X:
|
if cs.flags & ESPCoreDumpSegment.PF_X:
|
||||||
seg_name = 'rom.text'
|
seg_name = 'rom.text'
|
||||||
else:
|
else:
|
||||||
seg_name = 'tasks.data'
|
seg_name = 'tasks.data'
|
||||||
print ".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str())
|
print(".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str()))
|
||||||
p = gdbmi_getinfo(p, handlers, "x/%dx 0x%x" % (len(cs.data)/4, cs.addr))
|
p = gdbmi_getinfo(p, handlers, "x/%dx 0x%x" % (old_div(len(cs.data),4), cs.addr))
|
||||||
|
|
||||||
print "\n===================== ESP32 CORE DUMP END ====================="
|
print("\n===================== ESP32 CORE DUMP END =====================")
|
||||||
print "==============================================================="
|
print("===============================================================")
|
||||||
|
|
||||||
p.stdin.write('q\n')
|
p.stdin.write(b'q\n')
|
||||||
p.wait()
|
p.wait()
|
||||||
p.stdin.close()
|
p.stdin.close()
|
||||||
p.stdout.close()
|
p.stdout.close()
|
||||||
|
@ -1073,7 +1086,7 @@ def info_corefile(args):
|
||||||
if not args.core and not args.save_core:
|
if not args.core and not args.save_core:
|
||||||
loader.remove_tmp_file(core_fname)
|
loader.remove_tmp_file(core_fname)
|
||||||
loader.cleanup()
|
loader.cleanup()
|
||||||
print 'Done!'
|
print('Done!')
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -1123,12 +1136,12 @@ def main():
|
||||||
parser_info_coredump.add_argument('prog', help='Path to program\'s ELF binary', type=str)
|
parser_info_coredump.add_argument('prog', help='Path to program\'s ELF binary', type=str)
|
||||||
|
|
||||||
# internal sanity check - every operation matches a module function of the same name
|
# internal sanity check - every operation matches a module function of the same name
|
||||||
for operation in subparsers.choices.keys():
|
for operation in subparsers.choices:
|
||||||
assert operation in globals(), "%s should be a module function" % operation
|
assert operation in globals(), "%s should be a module function" % operation
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
print 'espcoredump.py v%s' % __version__
|
print('espcoredump.py v%s' % __version__)
|
||||||
|
|
||||||
operation_func = globals()[args.operation]
|
operation_func = globals()[args.operation]
|
||||||
operation_func(args)
|
operation_func(args)
|
||||||
|
@ -1138,5 +1151,5 @@ if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
main()
|
main()
|
||||||
except ESPCoreDumpError as e:
|
except ESPCoreDumpError as e:
|
||||||
print '\nA fatal error occurred: %s' % e
|
print('\nA fatal error occurred: %s' % e)
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
|
158
components/espcoredump/test/coredump.b64
Normal file
158
components/espcoredump/test/coredump.b64
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
lBoAAAkAAABkAQAA
|
||||||
|
BD77PwB7+z/QfPs/
|
||||||
|
cHv7P3B8+z9tAAAAPC37Pzwt+z8EPvs/NC37PxIAAAClpaWlpaWlpQQ++z8AAAAA
|
||||||
|
BwAAANR0+z91bmFsaWduZWRfcHRyX3QAAQAAANB8+z8AAAAAIAgGAAcAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
aDtAP20hDUAwBAYASCENgMB7+z8CAAAANjxAPwB8+z/06Po/AAAAAAAAAAAFAAAA
|
||||||
|
rf///yAAAABsPvs/AQAAAIAAAAABAAAAAAAAAAAAAAAdAAAABQAAAP0UAEANFQBA
|
||||||
|
/////wEAAACAAAAAfCEIQIwP+z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAEAAACAAAAAAQAAAAAAAABIIQ2A8Hv7PwEAAAD06Po/
|
||||||
|
pycNgPB7+z8KAAAA9Oj6PwB8+z/06Po/AAAAAAAAAACQIQ2AIHz7PwoAAAABAAAA
|
||||||
|
kztAPx4AAAA1PEA/AQAAACMABgABAAAAIQAGAKA6+z8AAAAAUHz7PwAAAAAAAAAA
|
||||||
|
AwAAAFB8+z8AAAAAAAAAAGwQ+z8EPvs/AAAAAAAAAAAAAAAAcHz7PwAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx8+z8AAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
/Fb7P5BV+z/0Vvs/
|
||||||
|
kFX7P5BW+z/ZclwZcFz7P7As+z/8Vvs/qCz7PxkAAADVIwJJEo189/xW+z8AAAAA
|
||||||
|
AAAAAPhS+z9JRExFMAAweiWIEpHwtvYAAAAAAPRW+z8AAAAAIAIGAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAA8448=
|
||||||
|
2CEIQIZKDkAwAgYAuFcIgFBW+z8IAAAAAAAAAAEAAABoXPs/AAAAAAEAAACsK/s/
|
||||||
|
kCv7PwAAAAABAAAAAAAAAAEAAAAhAAYAIwgGAAAAAADcSwiAEFb7PwAAAAAAAAAA
|
||||||
|
AAAAANEjCEABAAAA6GQIQAHp+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIQAGACMIBgAAAAAAcFb7PwAAAAAAAAAA
|
||||||
|
AQAAAGhc+z8AAAAAAQAAAAAAAACQVvs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnFb7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
aFz7PwBb+z9gXPs/
|
||||||
|
AFv7PwBc+z9TsePnsCz7PwRX+z9oXPs/qCz7PxkAAACoWji9Rc4eO2hc+z8AAAAA
|
||||||
|
AAAAAGRY+z9JRExFMQBwjmCRXQvnOuwAAQAAAGBc+z8AAAAAIA4GAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAACbsV8=
|
||||||
|
2CEIQIZKDkAwDgYAuFcIgMBb+z8IAAAAAQAAAAAAAAD8Vvs/AAAAAAEAAADMK/s/
|
||||||
|
kCv7PwAAAAABAACAAAAAAAEAAAAhAAYAAAAAAAAAAAAgAAYAAQAAAAAAAAAAAAAA
|
||||||
|
AAAAANEjCEABAAAA6GQIQBzv+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIQAGAAAAAAAAAAAA4Fv7PwAAAAAAAAAA
|
||||||
|
AAAAAPxW+z8AAAAAAQAAAAAAAAAAXPs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFz7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAA==
|
||||||
|
nDz7P2Bz+z/MdPs/
|
||||||
|
YHP7P2B0+z/RAAAAnCz7P3Q/+z+cPPs/lCz7PxQAAAAkbPs/JGz7P5w8+z8AAAAA
|
||||||
|
BQAAANBs+z9iYWRfcHRyX3Rhc2sApaUA////f8x0+z8AAAAAIQAGAAUAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAClpaU=
|
||||||
|
2CEIQJ5VCEAwAgYAEyENgCB0+z/RAAAAAAAAAGwQ+z+cPPs/AAAAAAAAAACeVQiA
|
||||||
|
AHT7PwAAAADRAAAAIwAGAAEAAAAhAAYAcFv7PwAAAACkJw2A4HP7P/0UAEANFQBA
|
||||||
|
+f///9EjCEABAAAA6GQIQHwH+z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAACMABgABAAAAIQAGAHBb+z8AAAAAQHT7PwAAAAAAAAAA
|
||||||
|
bBD7P5w8+z8AAAAAAAAAAAAAAABgdPs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbHT7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
|
||||||
|
bD/7P3CD+z/UhPs/
|
||||||
|
cIP7P3CE+z/RAAAApDz7P5ws+z9sP/s/lCz7Pw8AAAC4PPs/JGz7P2w/+z8AAAAA
|
||||||
|
CgAAANh8+z9mYWlsZWRfYXNzZXJ0X3QAAAAAANSE+z8AAAAAIQAGAAoAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
2CEIQJ5VCEAwAgYAoyANgDCE+z/RAAAAAAAAAGwQ+z9sP/s/AAAAAAAAAACeVQiA
|
||||||
|
EIT7PwAAAADRAAAAIwAGAAEAAAAhAAYAAAAAAAAAAACkJw2A8IP7P/0UAEANFQBA
|
||||||
|
+P///9EjCEABAAAA6GQIQIwX+z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAACMABgABAAAAIQAGAAAAAAAAAAAAUIT7PwAAAAAAAAAA
|
||||||
|
bBD7P2w/+z8AAAAAAAAAAAAAAABwhPs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfIT7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
yGb7P0Bl+z/AZvs/
|
||||||
|
QGX7P2Bm+z8AAAAAiCz7P4gs+z/IZvs/gCz7PxgAAAD8Xfs//F37P8hm+z/0Xfs/
|
||||||
|
AQAAAMRe+z9UbXIgU3ZjAFUPn9OBr6IAAAAAAMBm+z8AAAAAIQAGAAEAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAADm+Zc=
|
||||||
|
2CEIQJxiCEAwCAYAj2MIgABm+z+oLvs/AAAAAAEAAAAMUfs/AAAAAAEAAACcYgiA
|
||||||
|
4GX7PwAAAAAALPs/GF77PwAAAAAAAAAAAAAAAAAAAAClpaWlpaWlpQAAAAAAAAAA
|
||||||
|
AAAAANEjCEAAAAAA6GQIQHz5+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGb7PwAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAHz5+j8AAAAAAAAAAAAAAAAAAAAAYGb7PwAAAAAAAAAA
|
||||||
|
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAABsZvs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
iPr6PwD5+j+A+vo/
|
||||||
|
APn6PyD6+j/akPlfPDv7P6D9+j+I+vo/JCz7PwMAAABc6vo/XOr6P4j6+j9U6vo/
|
||||||
|
FgAAAITq+j9lc3BfdGltZXIAH+HpXvQAAAAAAID6+j8AAAAAIQAGABYAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAACISzU=
|
||||||
|
2CEIQK1GCEAwAAYA+xQNgMD5+j8w6vo/AAAAAHjq+j8AAAAAAQAAAAEAAACtRgiA
|
||||||
|
oPn6PwAAAACcLvs/nC77PwEAAAAhAAYAAAAAAAAAAAClpaWlpaWlpQAAAAAAAAAA
|
||||||
|
AAAAANEjCEABAAAA6GQIQDyN+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPr6PwAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAACD6+j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAs+vo/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
NDv7P4A5+z8sO/s/
|
||||||
|
gDn7P8A6+z/APAiILCz7P5D6+j80O/s/JCz7PwEAAAAs//o/LP/6PzQ7+z8k//o/
|
||||||
|
GAAAADA3+z9pcGMxAMP571b2wMSsI4QAAQAAACw7+z8AAAAAIQAGABgAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAADZjgQ=
|
||||||
|
2CEIQEoRCEAwAAYArUYIgEA6+z8BAAAAnC77P6Au+z+QfP4/AAAAACMHBgBKEQiA
|
||||||
|
IDr7P+AA8D8BAAAALBD7PwEAAAAgAAYAIwAGAAAAAABAOvs/AQAAAAAAAAAAAAAA
|
||||||
|
AAAAANEjCEABAAAA6GQIQNzN+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAP//P7MAAAAAAAAAAAAAAACzEQiAYDr7PwD/+j8AAAAA
|
||||||
|
AQAAAAEAAAAgAAYAIwAGAAAAAACgOvs/AQAAAPgvCEAAAAAACQAAAAAAAAAjBwYA
|
||||||
|
/////6A6+z8BAAAA+C8IQEj/+j8AAAAAAQAAAAAAAAAAAAAAwDr7PwAAAAAAAAAA
|
||||||
|
AQAAAAAAAAAAAAAAAAAAACwPCICAff4/KAAAACgAAAAAAAAAAAAAAMw6+z8AAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
|
||||||
|
mP36P6A1+z8oN/s/
|
||||||
|
oDX7P8A2+z9UgfpzkPr6Pyws+z+Y/fo/JCz7PwEAAABw/fo/cP36P5j9+j9o/fo/
|
||||||
|
GAAAACwz+z9pcGMwAIY9HgrUf/61qBQAAAAAACg3+z8AAAAAIQAGABgAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
|
||||||
|
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAADEsn4=
|
||||||
|
2CEIQK1GCEAwAAYAsxEIgGA2+z9E/fo/AAAAAIz9+j8AAAAAAQAAAAEAAACtRgiA
|
||||||
|
QDb7PwAAAACcLvs/nC77P/A6/j8AAAAAAgAAAAAAAAClpaWlpaWlpQAAAAAAAAAA
|
||||||
|
AAAAANEjCEDwOv4/6GQIQNzJ+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoDb7PwAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAMA2+z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqDgiAoDv+Pwws+z/kLvs/
|
||||||
|
AAAAAAAAAADMNvs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAA=
|
540
components/espcoredump/test/expected_output
Normal file
540
components/espcoredump/test/expected_output
Normal file
|
@ -0,0 +1,540 @@
|
||||||
|
espcoredump.py v0.2-dev
|
||||||
|
===============================================================
|
||||||
|
==================== ESP32 CORE DUMP START ====================
|
||||||
|
|
||||||
|
================== CURRENT THREAD REGISTERS ===================
|
||||||
|
pc 0x400d216d 0x400d216d <recur_func+77>
|
||||||
|
lbeg 0x400014fd 1073747197
|
||||||
|
lend 0x4000150d 1073747213
|
||||||
|
lcount 0xffffffff 4294967295
|
||||||
|
sar 0x0 0
|
||||||
|
ps 0x60420 394272
|
||||||
|
threadptr <unavailable>
|
||||||
|
br <unavailable>
|
||||||
|
scompare1 <unavailable>
|
||||||
|
acclo <unavailable>
|
||||||
|
acchi <unavailable>
|
||||||
|
m0 <unavailable>
|
||||||
|
m1 <unavailable>
|
||||||
|
m2 <unavailable>
|
||||||
|
m3 <unavailable>
|
||||||
|
expstate <unavailable>
|
||||||
|
f64r_lo <unavailable>
|
||||||
|
f64r_hi <unavailable>
|
||||||
|
f64s <unavailable>
|
||||||
|
fcr <unavailable>
|
||||||
|
fsr <unavailable>
|
||||||
|
a0 0x400d2148 1074602312
|
||||||
|
a1 0x3ffb7bc0 1073445824
|
||||||
|
a2 0x2 2
|
||||||
|
a3 0x3f403c36 1061174326
|
||||||
|
a4 0x3ffb7c00 1073445888
|
||||||
|
a5 0x3ffae8f4 1073408244
|
||||||
|
a6 0x0 0
|
||||||
|
a7 0x0 0
|
||||||
|
a8 0x5 5
|
||||||
|
a9 0xffffffad -83
|
||||||
|
a10 0x20 32
|
||||||
|
a11 0x3ffb3e6c 1073430124
|
||||||
|
a12 0x1 1
|
||||||
|
a13 0x80 128
|
||||||
|
a14 0x1 1
|
||||||
|
a15 0x0 0
|
||||||
|
|
||||||
|
==================== CURRENT THREAD STACK =====================
|
||||||
|
#0 0x400d216d in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:70
|
||||||
|
#1 0x400d2148 in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:63
|
||||||
|
#2 0x400d2148 in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:63
|
||||||
|
#3 0x400d2190 in unaligned_ptr_task (pvParameter=0x0) at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:80
|
||||||
|
|
||||||
|
======================== THREADS INFO =========================
|
||||||
|
Id Target Id Frame
|
||||||
|
9 process 8 0x400846ad in xQueueGenericReceive (xQueue=0x3ffafd44, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at /home/dragon/esp/esp-idf/components/freertos/queue.c:1591
|
||||||
|
8 process 7 0x4008114a in esp_crosscore_int_send_yield (core_id=1) at /home/dragon/esp/esp-idf/components/esp32/crosscore_int.c:112
|
||||||
|
7 process 6 0x400846ad in xQueueGenericReceive (xQueue=0x3ffaea30, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at /home/dragon/esp/esp-idf/components/freertos/queue.c:1591
|
||||||
|
6 process 5 0x4008629c in prvProcessTimerOrBlockTask (xNextExpireTime=<optimized out>, xListWasEmpty=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/timers.c:588
|
||||||
|
5 process 4 0x4008559e in vTaskDelay (xTicksToDelay=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491
|
||||||
|
4 process 3 0x4008559e in vTaskDelay (xTicksToDelay=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491
|
||||||
|
3 process 2 0x400e4a86 in esp_vApplicationWaitiHook () at /home/dragon/esp/esp-idf/components/esp32/freertos_hooks.c:66
|
||||||
|
2 process 1 0x400e4a86 in esp_vApplicationWaitiHook () at /home/dragon/esp/esp-idf/components/esp32/freertos_hooks.c:66
|
||||||
|
* 1 <main task> 0x400d216d in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:70
|
||||||
|
|
||||||
|
======================= ALL MEMORY REGIONS ========================
|
||||||
|
Name Address Size Attrs
|
||||||
|
.rtc.text 0x400c0000 0x0 RW
|
||||||
|
.rtc_noinit 0x50000000 0x0 RW
|
||||||
|
.iram0.vectors 0x40080000 0x400 R XA
|
||||||
|
.iram0.text 0x40080400 0x93f8 RWXA
|
||||||
|
.dram0.data 0x3ffb0000 0x2288 RW A
|
||||||
|
.noinit 0x3ffb2288 0x0 RW
|
||||||
|
.flash.rodata 0x3f400020 0x6cd4 RW A
|
||||||
|
.flash.text 0x400d0018 0x14cb4 R XA
|
||||||
|
.coredump.tasks.data 0x3ffb3e04 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb7b00 0x1d0 RW
|
||||||
|
.coredump.tasks.data 0x3ffb56fc 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb5590 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb5c68 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb5b00 0x160 RW
|
||||||
|
.coredump.tasks.data 0x3ffb3c9c 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb7360 0x16c RW
|
||||||
|
.coredump.tasks.data 0x3ffb3f6c 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb8370 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb66c8 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb6540 0x180 RW
|
||||||
|
.coredump.tasks.data 0x3ffafa88 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffaf900 0x180 RW
|
||||||
|
.coredump.tasks.data 0x3ffb3b34 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb3980 0x1ac RW
|
||||||
|
.coredump.tasks.data 0x3ffafd98 0x164 RW
|
||||||
|
.coredump.tasks.data 0x3ffb35a0 0x188 RW
|
||||||
|
|
||||||
|
====================== CORE DUMP MEMORY CONTENTS ========================
|
||||||
|
.coredump.tasks.data 0x3ffb3e04 0x164 RW
|
||||||
|
0x3ffb3e04: 0x3ffb7b70 0x3ffb7c70 0x0000006d 0x3ffb2d3c
|
||||||
|
0x3ffb3e14: 0x3ffb2d3c 0x3ffb3e04 0x3ffb2d34 0x00000012
|
||||||
|
0x3ffb3e24: 0xa5a5a5a5 0xa5a5a5a5 0x3ffb3e04 0x00000000
|
||||||
|
0x3ffb3e34: 0x00000007 0x3ffb74d4 0x6c616e75 0x656e6769
|
||||||
|
0x3ffb3e44: 0x74705f64 0x00745f72 0x00000001 0x3ffb7cd0
|
||||||
|
0x3ffb3e54: 0x00000000 0x00060820 0x00000007 0x00000000
|
||||||
|
0x3ffb3e64: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb3e74: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb3e84: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb3e94: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ea4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3eb4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ec4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ed4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ee4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ef4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f04: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f14: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f24: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f34: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f44: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f54: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3f64: 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb7b00 0x1d0 RW
|
||||||
|
0x3ffb7b00: 0x3f403b68 0x400d216d 0x00060430 0x800d2148
|
||||||
|
0x3ffb7b10: 0x3ffb7bc0 0x00000002 0x3f403c36 0x3ffb7c00
|
||||||
|
0x3ffb7b20: 0x3ffae8f4 0x00000000 0x00000000 0x00000005
|
||||||
|
0x3ffb7b30: 0xffffffad 0x00000020 0x3ffb3e6c 0x00000001
|
||||||
|
0x3ffb7b40: 0x00000080 0x00000001 0x00000000 0x00000000
|
||||||
|
0x3ffb7b50: 0x0000001d 0x00000005 0x400014fd 0x4000150d
|
||||||
|
0x3ffb7b60: 0xffffffff 0x00000001 0x00000080 0x4008217c
|
||||||
|
0x3ffb7b70: 0x3ffb0f8c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7b80: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7b90: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7ba0: 0x00000001 0x00000080 0x00000001 0x00000000
|
||||||
|
0x3ffb7bb0: 0x800d2148 0x3ffb7bf0 0x00000001 0x3ffae8f4
|
||||||
|
0x3ffb7bc0: 0x800d27a7 0x3ffb7bf0 0x0000000a 0x3ffae8f4
|
||||||
|
0x3ffb7bd0: 0x3ffb7c00 0x3ffae8f4 0x00000000 0x00000000
|
||||||
|
0x3ffb7be0: 0x800d2190 0x3ffb7c20 0x0000000a 0x00000001
|
||||||
|
0x3ffb7bf0: 0x3f403b93 0x0000001e 0x3f403c35 0x00000001
|
||||||
|
0x3ffb7c00: 0x00060023 0x00000001 0x00060021 0x3ffb3aa0
|
||||||
|
0x3ffb7c10: 0x00000000 0x3ffb7c50 0x00000000 0x00000000
|
||||||
|
0x3ffb7c20: 0x00000003 0x3ffb7c50 0x00000000 0x00000000
|
||||||
|
0x3ffb7c30: 0x3ffb106c 0x3ffb3e04 0x00000000 0x00000000
|
||||||
|
0x3ffb7c40: 0x00000000 0x3ffb7c70 0x00000000 0x00000000
|
||||||
|
0x3ffb7c50: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7c60: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7c70: 0x00000000 0x00000000 0x3ffb7c7c 0x00000000
|
||||||
|
0x3ffb7c80: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7c90: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7ca0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7cb0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7cc0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb56fc 0x164 RW
|
||||||
|
0x3ffb56fc: 0x3ffb5590 0x3ffb5690 0x195c72d9 0x3ffb5c70
|
||||||
|
0x3ffb570c: 0x3ffb2cb0 0x3ffb56fc 0x3ffb2ca8 0x00000019
|
||||||
|
0x3ffb571c: 0x490223d5 0xf77c8d12 0x3ffb56fc 0x00000000
|
||||||
|
0x3ffb572c: 0x00000000 0x3ffb52f8 0x454c4449 0x7a300030
|
||||||
|
0x3ffb573c: 0x91128825 0x00f6b6f0 0x00000000 0x3ffb56f4
|
||||||
|
0x3ffb574c: 0x00000000 0x00060220 0x00000000 0x00000000
|
||||||
|
0x3ffb575c: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb576c: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb577c: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb578c: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb579c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb57ac: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb57bc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb57cc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb57dc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb57ec: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb57fc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb580c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb581c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb582c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb583c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb584c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb585c: 0x8fe33c00
|
||||||
|
.coredump.tasks.data 0x3ffb5590 0x164 RW
|
||||||
|
0x3ffb5590: 0x400821d8 0x400e4a86 0x00060230 0x800857b8
|
||||||
|
0x3ffb55a0: 0x3ffb5650 0x00000008 0x00000000 0x00000001
|
||||||
|
0x3ffb55b0: 0x3ffb5c68 0x00000000 0x00000001 0x3ffb2bac
|
||||||
|
0x3ffb55c0: 0x3ffb2b90 0x00000000 0x00000001 0x00000000
|
||||||
|
0x3ffb55d0: 0x00000001 0x00060021 0x00060823 0x00000000
|
||||||
|
0x3ffb55e0: 0x80084bdc 0x3ffb5610 0x00000000 0x00000000
|
||||||
|
0x3ffb55f0: 0x00000000 0x400823d1 0x00000001 0x400864e8
|
||||||
|
0x3ffb5600: 0x3ffae901 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5610: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5620: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5630: 0x00000000 0x00000001 0x00060021 0x00060823
|
||||||
|
0x3ffb5640: 0x00000000 0x3ffb5670 0x00000000 0x00000000
|
||||||
|
0x3ffb5650: 0x00000001 0x3ffb5c68 0x00000000 0x00000001
|
||||||
|
0x3ffb5660: 0x00000000 0x3ffb5690 0x00000000 0x00000000
|
||||||
|
0x3ffb5670: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5680: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5690: 0x00000000 0x00000000 0x3ffb569c 0x00000000
|
||||||
|
0x3ffb56a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb56b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb56c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb56d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb56e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb56f0: 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb5c68 0x164 RW
|
||||||
|
0x3ffb5c68: 0x3ffb5b00 0x3ffb5c00 0xe7e3b153 0x3ffb2cb0
|
||||||
|
0x3ffb5c78: 0x3ffb5704 0x3ffb5c68 0x3ffb2ca8 0x00000019
|
||||||
|
0x3ffb5c88: 0xbd385aa8 0x3b1ece45 0x3ffb5c68 0x00000000
|
||||||
|
0x3ffb5c98: 0x00000000 0x3ffb5864 0x454c4449 0x8e700031
|
||||||
|
0x3ffb5ca8: 0x0b5d9160 0x00ec3ae7 0x00000001 0x3ffb5c60
|
||||||
|
0x3ffb5cb8: 0x00000000 0x00060e20 0x00000000 0x00000000
|
||||||
|
0x3ffb5cc8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb5cd8: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb5ce8: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb5cf8: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d08: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d18: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d28: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d38: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d48: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d58: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d68: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d78: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d88: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5d98: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5da8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5db8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5dc8: 0x5fb19b00
|
||||||
|
.coredump.tasks.data 0x3ffb5b00 0x160 RW
|
||||||
|
0x3ffb5b00: 0x400821d8 0x400e4a86 0x00060e30 0x800857b8
|
||||||
|
0x3ffb5b10: 0x3ffb5bc0 0x00000008 0x00000001 0x00000000
|
||||||
|
0x3ffb5b20: 0x3ffb56fc 0x00000000 0x00000001 0x3ffb2bcc
|
||||||
|
0x3ffb5b30: 0x3ffb2b90 0x00000000 0x80000001 0x00000000
|
||||||
|
0x3ffb5b40: 0x00000001 0x00060021 0x00000000 0x00000000
|
||||||
|
0x3ffb5b50: 0x00060020 0x00000001 0x00000000 0x00000000
|
||||||
|
0x3ffb5b60: 0x00000000 0x400823d1 0x00000001 0x400864e8
|
||||||
|
0x3ffb5b70: 0x3ffaef1c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5b80: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5b90: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5ba0: 0x00000000 0x00000001 0x00060021 0x00000000
|
||||||
|
0x3ffb5bb0: 0x00000000 0x3ffb5be0 0x00000000 0x00000000
|
||||||
|
0x3ffb5bc0: 0x00000000 0x3ffb56fc 0x00000000 0x00000001
|
||||||
|
0x3ffb5bd0: 0x00000000 0x3ffb5c00 0x00000000 0x00000000
|
||||||
|
0x3ffb5be0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5bf0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5c00: 0x00000000 0x00000000 0x3ffb5c0c 0x00000000
|
||||||
|
0x3ffb5c10: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5c20: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5c30: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5c40: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb5c50: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb3c9c 0x164 RW
|
||||||
|
0x3ffb3c9c: 0x3ffb7360 0x3ffb7460 0x000000d1 0x3ffb2c9c
|
||||||
|
0x3ffb3cac: 0x3ffb3f74 0x3ffb3c9c 0x3ffb2c94 0x00000014
|
||||||
|
0x3ffb3cbc: 0x3ffb6c24 0x3ffb6c24 0x3ffb3c9c 0x00000000
|
||||||
|
0x3ffb3ccc: 0x00000005 0x3ffb6cd0 0x5f646162 0x5f727470
|
||||||
|
0x3ffb3cdc: 0x6b736174 0x00a5a500 0x7fffffff 0x3ffb74cc
|
||||||
|
0x3ffb3cec: 0x00000000 0x00060021 0x00000005 0x00000000
|
||||||
|
0x3ffb3cfc: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb3d0c: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb3d1c: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb3d2c: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d3c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d4c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d5c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d6c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d7c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d8c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3d9c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3dac: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3dbc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3dcc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ddc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3dec: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3dfc: 0xa5a5a500
|
||||||
|
.coredump.tasks.data 0x3ffb7360 0x16c RW
|
||||||
|
0x3ffb7360: 0x400821d8 0x4008559e 0x00060230 0x800d2113
|
||||||
|
0x3ffb7370: 0x3ffb7420 0x000000d1 0x00000000 0x3ffb106c
|
||||||
|
0x3ffb7380: 0x3ffb3c9c 0x00000000 0x00000000 0x8008559e
|
||||||
|
0x3ffb7390: 0x3ffb7400 0x00000000 0x000000d1 0x00060023
|
||||||
|
0x3ffb73a0: 0x00000001 0x00060021 0x3ffb5b70 0x00000000
|
||||||
|
0x3ffb73b0: 0x800d27a4 0x3ffb73e0 0x400014fd 0x4000150d
|
||||||
|
0x3ffb73c0: 0xfffffff9 0x400823d1 0x00000001 0x400864e8
|
||||||
|
0x3ffb73d0: 0x3ffb077c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb73e0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb73f0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7400: 0x00060023 0x00000001 0x00060021 0x3ffb5b70
|
||||||
|
0x3ffb7410: 0x00000000 0x3ffb7440 0x00000000 0x00000000
|
||||||
|
0x3ffb7420: 0x3ffb106c 0x3ffb3c9c 0x00000000 0x00000000
|
||||||
|
0x3ffb7430: 0x00000000 0x3ffb7460 0x00000000 0x00000000
|
||||||
|
0x3ffb7440: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7450: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7460: 0x00000000 0x00000000 0x3ffb746c 0x00000000
|
||||||
|
0x3ffb7470: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7480: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb7490: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb74a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb74b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb74c0: 0x00000000 0x00000000 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb3f6c 0x164 RW
|
||||||
|
0x3ffb3f6c: 0x3ffb8370 0x3ffb8470 0x000000d1 0x3ffb3ca4
|
||||||
|
0x3ffb3f7c: 0x3ffb2c9c 0x3ffb3f6c 0x3ffb2c94 0x0000000f
|
||||||
|
0x3ffb3f8c: 0x3ffb3cb8 0x3ffb6c24 0x3ffb3f6c 0x00000000
|
||||||
|
0x3ffb3f9c: 0x0000000a 0x3ffb7cd8 0x6c696166 0x615f6465
|
||||||
|
0x3ffb3fac: 0x72657373 0x00745f74 0x00000000 0x3ffb84d4
|
||||||
|
0x3ffb3fbc: 0x00000000 0x00060021 0x0000000a 0x00000000
|
||||||
|
0x3ffb3fcc: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb3fdc: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb3fec: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb3ffc: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb400c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb401c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb402c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb403c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb404c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb405c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb406c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb407c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb408c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb409c: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb40ac: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb40bc: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb40cc: 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb8370 0x164 RW
|
||||||
|
0x3ffb8370: 0x400821d8 0x4008559e 0x00060230 0x800d20a3
|
||||||
|
0x3ffb8380: 0x3ffb8430 0x000000d1 0x00000000 0x3ffb106c
|
||||||
|
0x3ffb8390: 0x3ffb3f6c 0x00000000 0x00000000 0x8008559e
|
||||||
|
0x3ffb83a0: 0x3ffb8410 0x00000000 0x000000d1 0x00060023
|
||||||
|
0x3ffb83b0: 0x00000001 0x00060021 0x00000000 0x00000000
|
||||||
|
0x3ffb83c0: 0x800d27a4 0x3ffb83f0 0x400014fd 0x4000150d
|
||||||
|
0x3ffb83d0: 0xfffffff8 0x400823d1 0x00000001 0x400864e8
|
||||||
|
0x3ffb83e0: 0x3ffb178c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb83f0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb8400: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb8410: 0x00060023 0x00000001 0x00060021 0x00000000
|
||||||
|
0x3ffb8420: 0x00000000 0x3ffb8450 0x00000000 0x00000000
|
||||||
|
0x3ffb8430: 0x3ffb106c 0x3ffb3f6c 0x00000000 0x00000000
|
||||||
|
0x3ffb8440: 0x00000000 0x3ffb8470 0x00000000 0x00000000
|
||||||
|
0x3ffb8450: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb8460: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb8470: 0x00000000 0x00000000 0x3ffb847c 0x00000000
|
||||||
|
0x3ffb8480: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb8490: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb84a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb84b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb84c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb84d0: 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb66c8 0x164 RW
|
||||||
|
0x3ffb66c8: 0x3ffb6540 0x3ffb6660 0x00000000 0x3ffb2c88
|
||||||
|
0x3ffb66d8: 0x3ffb2c88 0x3ffb66c8 0x3ffb2c80 0x00000018
|
||||||
|
0x3ffb66e8: 0x3ffb5dfc 0x3ffb5dfc 0x3ffb66c8 0x3ffb5df4
|
||||||
|
0x3ffb66f8: 0x00000001 0x3ffb5ec4 0x20726d54 0x00637653
|
||||||
|
0x3ffb6708: 0xd39f0f55 0x00a2af81 0x00000000 0x3ffb66c0
|
||||||
|
0x3ffb6718: 0x00000000 0x00060021 0x00000001 0x00000000
|
||||||
|
0x3ffb6728: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb6738: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb6748: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb6758: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6768: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6778: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6788: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6798: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb67a8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb67b8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb67c8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb67d8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb67e8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb67f8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6808: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6818: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6828: 0x97f9e600
|
||||||
|
.coredump.tasks.data 0x3ffb6540 0x180 RW
|
||||||
|
0x3ffb6540: 0x400821d8 0x4008629c 0x00060830 0x8008638f
|
||||||
|
0x3ffb6550: 0x3ffb6600 0x3ffb2ea8 0x00000000 0x00000001
|
||||||
|
0x3ffb6560: 0x3ffb510c 0x00000000 0x00000001 0x8008629c
|
||||||
|
0x3ffb6570: 0x3ffb65e0 0x00000000 0x3ffb2c00 0x3ffb5e18
|
||||||
|
0x3ffb6580: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6590: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
|
||||||
|
0x3ffb65a0: 0x00000000 0x400823d1 0x00000000 0x400864e8
|
||||||
|
0x3ffb65b0: 0x3ffaf97c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb65c0: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb65d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb65e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb65f0: 0x00000000 0x3ffb6630 0x00000000 0x00000000
|
||||||
|
0x3ffb6600: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6610: 0x3ffaf97c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6620: 0x00000000 0x3ffb6660 0x00000000 0x00000000
|
||||||
|
0x3ffb6630: 0x00000001 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6640: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6650: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6660: 0x00000000 0x00000000 0x3ffb666c 0x00000000
|
||||||
|
0x3ffb6670: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6680: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb6690: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb66a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb66b0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffafa88 0x164 RW
|
||||||
|
0x3ffafa88: 0x3ffaf900 0x3ffafa20 0x5ff990da 0x3ffb3b3c
|
||||||
|
0x3ffafa98: 0x3ffafda0 0x3ffafa88 0x3ffb2c24 0x00000003
|
||||||
|
0x3ffafaa8: 0x3ffaea5c 0x3ffaea5c 0x3ffafa88 0x3ffaea54
|
||||||
|
0x3ffafab8: 0x00000016 0x3ffaea84 0x5f707365 0x656d6974
|
||||||
|
0x3ffafac8: 0xe11f0072 0x00f45ee9 0x00000000 0x3ffafa80
|
||||||
|
0x3ffafad8: 0x00000000 0x00060021 0x00000016 0x00000000
|
||||||
|
0x3ffafae8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffafaf8: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffafb08: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffafb18: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb28: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb38: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb48: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb58: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb68: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb78: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb88: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafb98: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafba8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafbb8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafbc8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafbd8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafbe8: 0x354b8800
|
||||||
|
.coredump.tasks.data 0x3ffaf900 0x180 RW
|
||||||
|
0x3ffaf900: 0x400821d8 0x400846ad 0x00060030 0x800d14fb
|
||||||
|
0x3ffaf910: 0x3ffaf9c0 0x3ffaea30 0x00000000 0x3ffaea78
|
||||||
|
0x3ffaf920: 0x00000000 0x00000001 0x00000001 0x800846ad
|
||||||
|
0x3ffaf930: 0x3ffaf9a0 0x00000000 0x3ffb2e9c 0x3ffb2e9c
|
||||||
|
0x3ffaf940: 0x00000001 0x00060021 0x00000000 0x00000000
|
||||||
|
0x3ffaf950: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
|
||||||
|
0x3ffaf960: 0x00000000 0x400823d1 0x00000001 0x400864e8
|
||||||
|
0x3ffaf970: 0x3ffa8d3c 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf980: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf990: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf9a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf9b0: 0x00000000 0x3ffafa00 0x00000000 0x00000000
|
||||||
|
0x3ffaf9c0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf9d0: 0xffffffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf9e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffaf9f0: 0x00000000 0x3ffafa20 0x00000000 0x00000000
|
||||||
|
0x3ffafa00: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafa10: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafa20: 0x00000000 0x00000000 0x3ffafa2c 0x00000000
|
||||||
|
0x3ffafa30: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafa40: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafa50: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafa60: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafa70: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffb3b34 0x164 RW
|
||||||
|
0x3ffb3b34: 0x3ffb3980 0x3ffb3ac0 0x88083cc0 0x3ffb2c2c
|
||||||
|
0x3ffb3b44: 0x3ffafa90 0x3ffb3b34 0x3ffb2c24 0x00000001
|
||||||
|
0x3ffb3b54: 0x3ffaff2c 0x3ffaff2c 0x3ffb3b34 0x3ffaff24
|
||||||
|
0x3ffb3b64: 0x00000018 0x3ffb3730 0x31637069 0xeff9c300
|
||||||
|
0x3ffb3b74: 0xc4c0f656 0x008423ac 0x00000001 0x3ffb3b2c
|
||||||
|
0x3ffb3b84: 0x00000000 0x00060021 0x00000018 0x00000000
|
||||||
|
0x3ffb3b94: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffb3ba4: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffb3bb4: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffb3bc4: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3bd4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3be4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3bf4: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c04: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c14: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c24: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c34: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c44: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c54: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c64: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c74: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c84: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3c94: 0x048ed900
|
||||||
|
.coredump.tasks.data 0x3ffb3980 0x1ac RW
|
||||||
|
0x3ffb3980: 0x400821d8 0x4008114a 0x00060030 0x800846ad
|
||||||
|
0x3ffb3990: 0x3ffb3a40 0x00000001 0x3ffb2e9c 0x3ffb2ea0
|
||||||
|
0x3ffb39a0: 0x3ffe7c90 0x00000000 0x00060723 0x8008114a
|
||||||
|
0x3ffb39b0: 0x3ffb3a20 0x3ff000e0 0x00000001 0x3ffb102c
|
||||||
|
0x3ffb39c0: 0x00000001 0x00060020 0x00060023 0x00000000
|
||||||
|
0x3ffb39d0: 0x3ffb3a40 0x00000001 0x00000000 0x00000000
|
||||||
|
0x3ffb39e0: 0x00000000 0x400823d1 0x00000001 0x400864e8
|
||||||
|
0x3ffb39f0: 0x3ffacddc 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3a00: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3a10: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3a20: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3a30: 0x800811b3 0x3ffb3a60 0x3ffaff00 0x00000000
|
||||||
|
0x3ffb3a40: 0x00000001 0x00000001 0x00060020 0x00060023
|
||||||
|
0x3ffb3a50: 0x00000000 0x3ffb3aa0 0x00000001 0x40082ff8
|
||||||
|
0x3ffb3a60: 0x00000000 0x00000009 0x00000000 0x00060723
|
||||||
|
0x3ffb3a70: 0xffffffff 0x3ffb3aa0 0x00000001 0x40082ff8
|
||||||
|
0x3ffb3a80: 0x3ffaff48 0x00000000 0x00000001 0x00000000
|
||||||
|
0x3ffb3a90: 0x00000000 0x3ffb3ac0 0x00000000 0x00000000
|
||||||
|
0x3ffb3aa0: 0x00000001 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ab0: 0x80080f2c 0x3ffe7d80 0x00000028 0x00000028
|
||||||
|
0x3ffb3ac0: 0x00000000 0x00000000 0x3ffb3acc 0x00000000
|
||||||
|
0x3ffb3ad0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3ae0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3af0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3b00: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3b10: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3b20: 0x00000000 0x00000000 0x00000000
|
||||||
|
.coredump.tasks.data 0x3ffafd98 0x164 RW
|
||||||
|
0x3ffafd98: 0x3ffb35a0 0x3ffb36c0 0x73fa8154 0x3ffafa90
|
||||||
|
0x3ffafda8: 0x3ffb2c2c 0x3ffafd98 0x3ffb2c24 0x00000001
|
||||||
|
0x3ffafdb8: 0x3ffafd70 0x3ffafd70 0x3ffafd98 0x3ffafd68
|
||||||
|
0x3ffafdc8: 0x00000018 0x3ffb332c 0x30637069 0x1e3d8600
|
||||||
|
0x3ffafdd8: 0xfe7fd40a 0x0014a8b5 0x00000000 0x3ffb3728
|
||||||
|
0x3ffafde8: 0x00000000 0x00060021 0x00000018 0x00000000
|
||||||
|
0x3ffafdf8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
|
||||||
|
0x3ffafe08: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
|
||||||
|
0x3ffafe18: 0x00000001 0x00000000 0x3f403c78 0x00000000
|
||||||
|
0x3ffafe28: 0x40001d48 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe38: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe48: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe58: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe68: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe78: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe88: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafe98: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafea8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafeb8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafec8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafed8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafee8: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffafef8: 0x7eb2c400
|
||||||
|
.coredump.tasks.data 0x3ffb35a0 0x188 RW
|
||||||
|
0x3ffb35a0: 0x400821d8 0x400846ad 0x00060030 0x800811b3
|
||||||
|
0x3ffb35b0: 0x3ffb3660 0x3ffafd44 0x00000000 0x3ffafd8c
|
||||||
|
0x3ffb35c0: 0x00000000 0x00000001 0x00000001 0x800846ad
|
||||||
|
0x3ffb35d0: 0x3ffb3640 0x00000000 0x3ffb2e9c 0x3ffb2e9c
|
||||||
|
0x3ffb35e0: 0x3ffe3af0 0x00000000 0x00000002 0x00000000
|
||||||
|
0x3ffb35f0: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
|
||||||
|
0x3ffb3600: 0x00000000 0x400823d1 0x3ffe3af0 0x400864e8
|
||||||
|
0x3ffb3610: 0x3ffac9dc 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3620: 0xb33fffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3630: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3640: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3650: 0x00000000 0x3ffb36a0 0x00000000 0x00000000
|
||||||
|
0x3ffb3660: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3670: 0xffffffff 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3680: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3690: 0x00000000 0x3ffb36c0 0x00000000 0x00000000
|
||||||
|
0x3ffb36a0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb36b0: 0x80080eaa 0x3ffe3ba0 0x3ffb2c0c 0x3ffb2ee4
|
||||||
|
0x3ffb36c0: 0x00000000 0x00000000 0x3ffb36cc 0x00000000
|
||||||
|
0x3ffb36d0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb36e0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb36f0: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3700: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3710: 0x00000000 0x00000000 0x00000000 0x00000000
|
||||||
|
0x3ffb3720: 0x00000000 0x00000000
|
||||||
|
|
||||||
|
===================== ESP32 CORE DUMP END =====================
|
||||||
|
===============================================================
|
||||||
|
Done!
|
BIN
components/espcoredump/test/test.elf
Normal file
BIN
components/espcoredump/test/test.elf
Normal file
Binary file not shown.
51
components/espcoredump/test/test_espcoredump.py
Executable file
51
components/espcoredump/test/test_espcoredump.py
Executable file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# Copyright 2018 Espressif Systems (Shanghai) PTE LTD
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
idf_path = os.getenv('IDF_PATH')
|
||||||
|
if idf_path:
|
||||||
|
sys.path.insert(0, os.path.join(idf_path, 'components', 'espcoredump'))
|
||||||
|
import espcoredump
|
||||||
|
|
||||||
|
class TestESPCoreDumpFileLoader(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.tmp_file = 'tmp'
|
||||||
|
self.dloader = espcoredump.ESPCoreDumpFileLoader(path='coredump.b64', b64=True)
|
||||||
|
self.assertIsInstance(self.dloader, espcoredump.ESPCoreDumpFileLoader)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.dloader.cleanup()
|
||||||
|
|
||||||
|
def testESPCoreDumpFileLoaderWithoutB64(self):
|
||||||
|
t = espcoredump.ESPCoreDumpFileLoader(path='coredump.b64', b64=False)
|
||||||
|
self.assertIsInstance(t, espcoredump.ESPCoreDumpFileLoader) # invoke for coverage of open()
|
||||||
|
t.cleanup()
|
||||||
|
|
||||||
|
def test_cannot_remove_dir(self):
|
||||||
|
self.dloader.remove_tmp_file(fname='.') # silent failure (but covers exception inside)
|
||||||
|
|
||||||
|
def test_create_corefile(self):
|
||||||
|
self.assertEqual(self.dloader.create_corefile(core_fname=self.tmp_file, off=0, rom_elf=None), self.tmp_file)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# The purpose of these tests is to increase the code coverage at places which are sensitive to issues related to
|
||||||
|
# Python 2&3 compatibility.
|
||||||
|
# The espcoredump is not suited for through unit testting. There lot of nested functions, interactive
|
||||||
|
# communication with the developement board and GDB, ...
|
||||||
|
unittest.main()
|
10
components/espcoredump/test/test_espcoredump.sh
Executable file
10
components/espcoredump/test/test_espcoredump.sh
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
{ coverage debug sys \
|
||||||
|
&& coverage erase \
|
||||||
|
&& coverage run -a --source=espcoredump ../espcoredump.py info_corefile -m -t b64 -c coredump.b64 test.elf &> output \
|
||||||
|
&& diff expected_output output \
|
||||||
|
&& coverage run -a --source=espcoredump ./test_espcoredump.py \
|
||||||
|
&& coverage report \
|
||||||
|
; } || { echo 'The test for espcoredump has failed!'; exit 1; }
|
||||||
|
|
|
@ -64,4 +64,5 @@ tools/test_idf_size/test.sh
|
||||||
tools/check_python_dependencies.py
|
tools/check_python_dependencies.py
|
||||||
docs/gen-dxd.py
|
docs/gen-dxd.py
|
||||||
tools/ci/multirun_with_pyenv.sh
|
tools/ci/multirun_with_pyenv.sh
|
||||||
|
components/espcoredump/test/test_espcoredump.py
|
||||||
|
components/espcoredump/test/test_espcoredump.sh
|
||||||
|
|
Loading…
Reference in a new issue