forked from Imagelibrary/binutils-gdb
gdb/dap: check for breakpoint source before unpacking
Not all breakpoints have a source location. For example, a breakpoint set on a raw address will have only the "address" field populated, but "source" will be None, which leads to a RuntimeError when attempting to unpack the filename and line number. Before attempting to unpack the filename and line number from the breakpoint, ensure that the source information is not None. Also populate the source and line information separately from the "instructionReference" field, so that breakpoints that include only an address are still included. Approved-By: Tom Tromey <tom@tromey.com>
This commit is contained in:
committed by
Tom Tromey
parent
4abf53c991
commit
155f5df517
@@ -106,14 +106,18 @@ def _breakpoint_descriptor(bp):
|
||||
# multiple locations. See
|
||||
# https://github.com/microsoft/debug-adapter-protocol/issues/13
|
||||
loc = bp.locations[0]
|
||||
(filename, line) = loc.source
|
||||
result.update(
|
||||
{
|
||||
"source": make_source(filename, os.path.basename(filename)),
|
||||
"line": line,
|
||||
"instructionReference": hex(loc.address),
|
||||
}
|
||||
)
|
||||
if loc.source:
|
||||
(filename, line) = loc.source
|
||||
result.update(
|
||||
{
|
||||
"source": make_source(filename, os.path.basename(filename)),
|
||||
"line": line,
|
||||
}
|
||||
)
|
||||
|
||||
if loc.address:
|
||||
result["instructionReference"] = hex(loc.address),
|
||||
|
||||
path = loc.fullname
|
||||
if path is not None:
|
||||
result["source"]["path"] = path
|
||||
|
||||
Reference in New Issue
Block a user