Sprinter: добавить отладку C-исходников и интеграцию VS Code
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Оффлайновая карта исходников Sprinter; live attach появится отдельным этапом."""
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
from sdbg.model import DebugMap
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--build', required=True)
|
||||
commands = parser.add_subparsers(dest='command', required=True)
|
||||
for name in ('map', 'vars', 'symbols', 'verify'): commands.add_parser(name)
|
||||
address = commands.add_parser('addr2line')
|
||||
address.add_argument('address', type=lambda s: int(s, 0))
|
||||
line = commands.add_parser('line2addr')
|
||||
line.add_argument('file')
|
||||
line.add_argument('line', type=int)
|
||||
args = parser.parse_args()
|
||||
try:
|
||||
model = DebugMap(args.build)
|
||||
if args.command == 'map': result = model.functions
|
||||
elif args.command == 'vars': result = model.variables
|
||||
elif args.command == 'symbols': result = model.symbols
|
||||
elif args.command == 'addr2line': result = model.addr2line(args.address)
|
||||
elif args.command == 'line2addr': result = model.line_locations(args.file,args.line)
|
||||
else:
|
||||
model.verify_executable()
|
||||
result = {'build_id': model.manifest['build_id'], 'artifacts': 'verified',
|
||||
'stale_sources': model.stale_sources, 'diagnostics': model.diagnostics,
|
||||
'limitations': model.manifest['limitations']}
|
||||
print(json.dumps(result, ensure_ascii=False, indent=2))
|
||||
return 0
|
||||
except (ValueError, OSError, KeyError) as error:
|
||||
print('sdbg: ' + str(error), file=sys.stderr)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == '__main__': sys.exit(main())
|
||||
Reference in New Issue
Block a user