►
From YouTube: .NET Core Design Reviews: Portable PDB
Description
I this meeting, we'll taka a look at the Portable PDB APIs in the metadata reader.
A
A
C
B
What
this
is
is
a
maza
compiler
can
now
generate
debug
info
I'm,
a
foreigner
format
that
basically
is
exactly
tables
and
metadata,
and
so
the
reader
is
implemented
in
system
reflection,
metadata
this
style
of
API
matching
matching
the.
So,
basically
you
can
see
a
whole
bunch
of
new,
like
anything
that
is
the
flaw
with
a
blah
handle
and
a
blah
handle
collection
is
effectively
just
like
everything
else
in
system
metadata.
So
if
you
see
all
the
other
types
or
you
know,
there's
method
definition
for,
if
did
type
definition
type
reference.
B
Any
references
are
all
tables,
each
of
them
on
the
handle
and
then
go
from
the
handle
to
the
to
the
to
the
record.
And
then
you
have
a
collection
of
these
records.
So
it's
a
very
like
there's
do
a
lot
of
API,
but
this
is
very
uniform,
like
you
know,
each
handle
Austin
moment,
conversions
to
the
you
know,
general
candle,
but.
B
There
are
like
five
or
six
new
tables,
and
then
I
will
be
useful
to
sort
of
call
out
that
there's
a
there's,
a
specification
for
that.
The
rosslyn
team
has
come
up
to
the
iowa-based
delicious.
Well,
we
might
really
be
part
of
this
specification
at
some
point.
Right
would
be,
we
would
say,
like
a
fanatic
is
extension.
That
is
enough.
Where
is
my
cross.
C
B
C
B
I
think
because
should
they
be
separate
API,
as
in
like
I
mean
so
basically
like
the
way
the
format
is
designed,
ends
up
being
super
efficient,
a
lot
but
I
mean
basically,
we
have
all,
but
we
it's
basically
like
very
uniform.
It's
like
it
does.
B
The
PDP
mistake
like
like,
like
a
in
terms
of
the
ecosystem,
having
an
just
equally
standardized
way
of
getting
given
given
like
symbol
of
the
symbols,
are
basically
you
don't
want
to
get
the
sequence
points,
just
like
more
information
in
metadata
like
but,
like
you
know,
we
can
put
in
a
separate
file
or
in
the
same
file,
but
basically
like
I,
think
it
belongs
in
the
same
library
because,
like
it
like
it's
a
missing
part,
because
it's
like
you
have
it
standard,
like
is
still
I
standard.
You
know
metadata
format.
B
We
have,
you
know
an
open
source
implementation
for
a
reader
of
that
format,
but
we
don't
have
this.
What
we
don't
have
is
like
the
symbols
right
so
like
putting
it
together
with
this
is
like
basic,
basically
show
you
there's
a
there's,
a
few
mins.
You
get
the
personal
it's
just
because
it
don't
it's
so
naturally
like
exact
same
pattern
to
access
it
as
the
rest
of
the
metadata
and
then.
C
D
B
C
B
C
D
A
D
A
Know
you
need
documents,
obviously,
in
order
to
represent
that
it
needs
some
more
things
from
the
actual
IL
which
we
have
an
exposed
before,
and
I
think
this
goes
with
method
definition
as
well,
which
I
believe
a
method.
Barrios
didn't
exist
before,
but
it
took
pretty
much
like
what
you
would
do
when
you
would.
B
C
C
C
C
C
B
C
B
C
B
B
B
They
need
the
same
like
they
need
the
same
low
level
like
bit
twiddling
code
to
get
around
move
around
in
the
table
and
so
like
I
think
that
if
you
want
to
like
make
more
data,
regardless
of
coupling
just
like
just
generally
have
more
data
in
the
equity
35
style,
then
we
should
like
reserved.
You
know
records
for
that
data
and
add
it
to
this
API
I,
don't
think
we
need
in
API
is
I
thought
at
that
level,
but
once.
B
B
It's
all
the
records
and
so
I
don't
really
see
why
we
wouldn't
just
you
know
if
you
want
to
use
exact,
same
sort
of
database
format
with
the
exact
same,
you
know
we
table
readers
and
headers
and
all
the
rest,
then
I
don't
have
a
problem
personally
I'm,
just
adding
naming
the
records
and
put
adding
them
to
this
API
other
thing:
yeah,
do
you?
Have
it
go
samples?
It's
just
like
basic
usage
of
the
new
API.
B
Gets
access
TV
that
and
use
that's
been
done
in
this
format
instead
of
global
program
pain,
but
there's
a
bridge
to
this
format,
as
I
understand
it
like,
so
that
not
all
the
calling
code,
s
like
like
I,
not
everyone
who
needs
to
access,
affordable,
pgps,
to
go
straight
through
this
ticking
and
go
through
existing
API,
have
been
rich
over
this.
But
I,
don't
know
the
details
there,
okay,
right
they've,.
C
A
Let's,
let's
step
back
for
a
second,
so
they
always
say
portable
pdb.
This
is
replacement
for
pdb
pdb
is
a
specific
format.
That
is
what
is
written
by
c++,
which
is
not
cross
flat.
So
the
whole
point
of
that
this
is
basically
merging
the
debug
information
into
the
same
assembly
with
implementation
lifts
not
as
aware
as
in.
C
D
D
D
C
D
B
B
D
C
B
C
A
C
C
B
That
I've
been
it's
like
I,
don't
know
we
got
seems
like
in
fact
I.
Don't
think
the
word
portable
pdb
occurs
anywhere
in
the
API,
so
I
think
that
can
be
discussed
like
thank
you.
Nor
does
the
reader
care
about
these
medical
plans.
So
I
think
those
are
things
that
you
could
follow
up
with
with
the
rosslyn
on,
but
I
don't
think
that
doesn't
easily.
It
doesn't.
B
B
D
C
A
B
C
B
C
C
A
A
B
The
format
as
it
is
that's
the
thing:
that's
right!
That's
right,
yeah,
that's
right,
yeah,
that's
right,
sorry,
acid
or
sprinkles,
yeah
and
there's
a
lying.
The
tea
is
not
there's
nothing
to
do
with
T.
You
have
to
know,
particularly
above
the
table,
about
the
yeah,
so
kamik
engineering
and
there
are
works
to
some
of
these
enumerators
like
because
they
each
have
known
code.
They.
A
A
D
B
No,
but
you
can
get
the
string,
maybe
I
know
they're
also
an
API
but
I'm.
You
can
get.
B
B
Pattern
so
so
I
guess
it's
like
a.
C
C
D
C
C
C
B
B
The
terms
here,
you
know
pretty
common,
like
if
you
look
at
like
CCI
a
look
at
like
anything
like
this.
Coming
from
the
TV,
I
believe,
like
I've,
heard
the
term
document
be
the
thing
that
symbols
refer
back
to
call
it
argument,
but
I
mean
like
so
there's
some
history
to
general
yeah.
I
please
my
understanding,
but
I
don't
think
that
music
am
here,
I
mean.
C
B
B
B
B
A
B
For
the
next
one,
so
I
talked
at
the
multiplier.
We
want
to
change
custom,
debug
information
to
custom,
debug
info
and
method
body
to
method
debugging
book,
because
it's
not
a
really
good
method
body
and
there's
already
a
method
body
in
reflection,
which
is
quite
add
one
for
the
one.
We
do
you
there's
actually
two
and
there's
actually
not
the
body
block
method
body
exists,
but
they
refer
to
actual
body
of
a
method.
Whereas
this
method
body
refers
to
debug
information
on
both
the
method
body,
so
I
don't
know.
Okay,.
C
B
The
namespace
info
suffix
is
pretty
common,
so
I
think
that's
looks
like
wine.
So
what
did
you
escape
but
ideally
that,
although
we
don't
have
guided
because
of
the
patterning
here,
I
mean
we
do
you
don't
suppose
we
have
this
guidance,
but
you
should
have
some
kinds
of
life.
There
comes
a
point
where
there
is
like
quick
certain
from
making
greevey
a
shin,
especially
as
we've
used
a
lot
like,
especially
when
things
are
getting
super
long
info
information
I,
don't
think
as
a
lot
of
confusion,
factor.
C
D
B
B
A
A
C
B
B
A
Right
then,
y
of
that
talk
about
document.
D
C
A
Ahead,
probably
not
a
good
work
to
do
here,
it's
not
in
the
spec
okay.
What
can
accept
you
here?
A
C
A
B
B
Elsewhere,
like
reporting
the
P
file
before
you
locate
them
the
airport,
because
every
point
token
or
or
r-va
that
get
out
sides
I
imagine
this
is
just
intuition
based
on
the
name,
then,
when
he
bugging
scenarios
and
if
you
have
only
how
to
BB,
still
need
to
get
this
information,
so
you
need
to
store
it.
Someone.
B
B
B
A
B
C
B
B
B
A
Law,
I
thought.
The
point
is,
you
have
been
exposed
yet,
but
it's
just
a
different
type.
I
guess
that
makes
you
on
a
different
type.
I.
D
A
C
B
A
D
C
B
I
see
it
probably
needs
an
ass
or
something
because
we
have
get
custom
attributes
right
next
to
it.
So
it's
the
same
pattern
right.
You
can
get
just
like
you're,
given
a
handle
to
a
custom
image
you,
as
associate
of
the
net
you
get
like
getting
getting
handled
directly
to
the
little
blob.
Basically
well,
the
record
that
says
there
is
a
blog,
you
get
one,
but
then
you.
B
C
B
A
B
C
D
B
D
B
A
A
A
B
B
Ask
you
what
kind
it
is
and
think
you
can
cast
it
down
to
the
other
handles,
but
then
it
turned
out
that
some
of
the
handles
that
needed
so
I
thought
like
this
is
very
much
invitations
etail,
where
you
have
32
bits
reserved
for
a
handle
and
basically
which
follows
like
a
metadata
token.
But
we
had
some
things
which,
like
a
string
which
is
in
a
separate.
C
B
Handle
now
is
actually
as
a
40-bit
struck,
so
so
we
can
represent
any
kind
of
handle.
First
entity
handle
can
only
can
represent
anything,
that's
in
a
table,
and
so
it's
Kim
ends
up
being
much
faster
to
use
entity
handle.
But
if
you
really
need
to
say
a
string
or
a
or
a
table
record
that
you
just
had
on,
you
need
to
carry
that
extra
bit.
That
extra
buddy.
A
A
B
B
A
Here's
our
document
can
handle
same
boilerplate,
intellectually
same
boiler.
Plant
named
blob,
handle.
A
C
B
C
C
A
D
A
D
B
We're
not
going
to
like,
because
we
don't
have
we
number,
don't
we
don't
materialize,
2
strings
a
certain
comparing
bites
from
the
string
that
you
want
to
convert
you
to
the
metadata
and,
like
we
don't
immune
the
business
of
culturally
like
if
you
want
to
do
culturally,
like
get
the
string
out
of
the
metadata
it'll,
because
you
typically
tipsy
season
will
talk
to
globalization
of
a
string
like
we're.
Not
enough
distance
like
on
the.
B
B
Long
time,
no
then
like
by
the
time
you
get
down,
just
like
sure
you
can
I
personally
found
like
that's
a
trade-off
when
you
start
ignoring
things
like
when
they're
shortcuts.
But
there's
also
like
an
overload
that
lets
you
that
overloads
useful
one
is
like
a
helper
that
feeds
it
so
like
hey
having
only
de
method,
neva,
not
sure,
if
that's
better,
but
the.
A
B
B
C
C
B
D
D
D
D
B
C
B
C
D
C
Will
just
do
like
with
some
super
generic
trains
and
the
problem
is
dat
ice
like
we
don't
want
majority
of
our
customers
to
ever
see
them
or
use
them
right
like
they're?
Not
very
you
know
it
has
to
be
come
on
the
use,
so
the
problem
of
generic
names
is
then
they
show
up
in
searches
where
you
say
msdn,
you
know
document
you
probably
don't
want
to
say.
Yes,
whoever
so
yeah.
A
C
C
D
B
A
B
Is
5
out
of
work?
Do
I
think
nothing.
A
What
else
do
we
had?
No,
is
it
no.
C
B
D
B
C
B
As
entry
point
out
and
budgetary
readers,
you
can
explore
them
under
their
ears
metadata
reader
doesn't
doesn't
it
take
some
metadata
section?
Flashy,
yes,
doesn't
know,
it
doesn't
know
how
to
get
a
drink,
but
now
you
could
get
the
debug
one.
If
you
have
debug
information,
which
will
be
the
same,
it's.
C
C
A
B
C
B
A
Then
case,
maybe
we
just
get
rid
of
the
type
and
just
make
it
a
message
right.
Imagine
reader
that
says,
give
me
the
entry
point,
I
guess
yeah
and
then
give
you
that
day,
because
I
mean
what
boy
is
you
say
like.
Why
would
I
need
to
type
then
just
set
the
single
entry
at
the
forum
and
it's
odd,
isn't
even
extensible,
but.
B
D
A
A
D
B
Just
we
call
get
debug
at
your
point,
but
it
generally
speaking
it
will
get.
You
get
your
point.
If
you
have
a
DVD
of
people,
yeah
who's,
that
the
interesting
thing
will
appear,
even
if
you
get
injured
from
there,
it's
not
giving
you
a
method.
Definition
in
blind,
it's
good!
You
giving
you
it's
a
walk,
monitor
all
you
get
so
convert
them
yeah.
B
But
me
you
can
get
him
a
you
get
a
token
from
the
pier
ear
and
then
you
can
convert
that
to
a
method
efficient
and
what's
a
bit
of
all
right,
I
mean
you
didn't
really
you
get
out.
B
Maybe
we
just
say
get
edgy
point
you
get
up
and
in
the
extension
EP
on
as
you
get
a
beating,
it's
not
your
typical.
It
takes
an
ereader
and
then
it
tries
to
find
it
either
the
debug
editor
or
the
important
like
you,
the
P
readers
optionally
null
or
something
it's
weird
man.
It's
gonna,
get
weird
I
think
this
is
more
in
the
spirit
up
before
manages
that
we
don't
do
like
this
is
literally
like
Krista
hold
on
how
this
month,
there's
like
it's
something
for
for
the
format.
B
A
That's
not
going
to
end
well,
alright,
what
you're
hot.