ipython / ipython/ipykernel

Can debugger forward "source" requests to debugpy?

Đang mở
#870 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
734
Fork
412
Merge trung bình
1 ngày 5 giờ
Pull request đã merge (30 ngày)
8

Mô tả

The current handler for "source" requests to the debugger is as follows:

https://github.com/ipython/ipykernel/blob/221dca63d7b2e2b8fea32bf8a101d07645fc9d3c/ipykernel/debugger.py#L427-L445

Intuitively, I would expect that the source request would be forwarded to debugpy, so that the [more complete implementation of pydevd](https://github.com/microsoft/debugpy/blob/cf0d684566edc339545b161da7c3dfc48af7c7d5/src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_process_net_command_json.py#L1108-L1140) could handle the request. Some differences of that implementation:
- Both implementations tries direct file access first.
- pydevd then tries the [`linecache`](https://docs.python.org/3/library/linecache.html) with the following comment:
> File might not exist at all, or we might not have a permission to read it, but it might also be inside a zipfile, or an IPython cell. In this case, linecache might still be able to retrieve the source.
- Finally, pydevd falls back to using the sourceReference supplied (which would previously be given on e.g. "module" events I think).

One of the advantages of the approach of pydevd is that it also is able to handle modules that are loaded from custom module loaders (zip file loader, DB loaders, web loaders, etc.). It would therefore be good if someone could write out why we're not simply forwarding the request to debugpy, and if there is a solid reason for it, maybe we could improve upon it so that we can still support the sourceReference field?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.