Fix stack trace decode for latest platformio (#830)

This commit is contained in:
Otto Winter 2019-11-02 21:19:15 +01:00
parent eae5c17b87
commit 2ff2750628
No known key found for this signature in database
GPG key ID: DB66C0BE6013F97E

View file

@ -101,12 +101,14 @@ def run_idedata(config):
args = ['-t', 'idedata'] args = ['-t', 'idedata']
stdout = run_platformio_cli_run(config, False, *args, capture_stdout=True) stdout = run_platformio_cli_run(config, False, *args, capture_stdout=True)
stdout = decode_text(stdout) stdout = decode_text(stdout)
match = re.search(r'{.*}', stdout) match = re.search(r'{\s*".*}', stdout)
if match is None: if match is None:
_LOGGER.debug("Could not match IDEData for %s", stdout)
return IDEData(None) return IDEData(None)
try: try:
return IDEData(json.loads(match.group())) return IDEData(json.loads(match.group()))
except ValueError: except ValueError:
_LOGGER.debug("Could not load IDEData for %s", stdout, exc_info=1)
return IDEData(None) return IDEData(None)
@ -165,11 +167,13 @@ ESP8266_EXCEPTION_CODES = {
def _decode_pc(config, addr): def _decode_pc(config, addr):
idedata = get_idedata(config) idedata = get_idedata(config)
if not idedata.addr2line_path or not idedata.firmware_elf_path: if not idedata.addr2line_path or not idedata.firmware_elf_path:
_LOGGER.debug("decode_pc no addr2line")
return return
command = [idedata.addr2line_path, '-pfiaC', '-e', idedata.firmware_elf_path, addr] command = [idedata.addr2line_path, '-pfiaC', '-e', idedata.firmware_elf_path, addr]
try: try:
translation = subprocess.check_output(command).strip() translation = decode_text(subprocess.check_output(command)).strip()
except Exception: # pylint: disable=broad-except except Exception: # pylint: disable=broad-except
_LOGGER.debug("Caught exception for command %s", command, exc_info=1)
return return
if "?? ??:0" in translation: if "?? ??:0" in translation: