Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rework debug symbols implementation #63

Open
jp2masa opened this issue Jul 8, 2018 · 1 comment
Open

Rework debug symbols implementation #63

jp2masa opened this issue Jul 8, 2018 · 1 comment

Comments

@jp2masa
Copy link
Member

jp2masa commented Jul 8, 2018

The current debug symbols implementation has some weak points:

  1. It uses SQLite to store the debug symbols, which is native, and forces us to have .
  2. It depends on getting debug info from pdb files at compile time, which is wrong. The debug symbols should be loaded at debug time, as they can come from anywhere.

The following changes should be done on the debug symbols implementation (probably both at the same time):

  1. We can replace SQLite with LiteDB, which is fully managed, and has good performance.

  2. The debug symbols should contain debug info that allows the debug engine to retrieve debug data from the pdb. The following data is important:

    • Mapping between static fields and the corresponding labels (already present)
    • Mapping between methods and the corresponding labels, including IL opcode labels (already present)
    • Stack offsets for arguments and locals (already present)
    • Field offsets (already present)
    • Type, method and field metadata tokens, and generic arguments (new)

    So sequence points and source documents would no longer be present in the debug symbols, and would be loaded by the debug engine. It would be possible to debug any assembly, including the runtime ones.

@czhower
Copy link
Member

czhower commented Jul 9, 2018

LiteDB sounds good. SQLLite has been a PITA since the beginning, but at the time was one of our best options.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants