🧠 Gỡ lỗi các bản dựng iBrowe với Symbol Server và Source Server
Để đơn giản hóa quá trình debug iBrowe trên Windows (x86, x64, arm64), tất cả các bản dựng chính thức đều tải lên các tệp symbol (.pdb) cùng với các binary tương ứng lên một Symbol Server được lưu trữ riêng.
🔗 iBrowe Symbol Server
https://ibrowe-symbols.s3.ibrowe.com/
⚠️ Lưu ý: URL này không thể duyệt trực tiếp bằng trình duyệt — nó được thiết kế để sử dụng tự động bởi các công cụ debug như Visual Studio, WinDbg hoặc LLDB.
⚙️ Cấu hình Visual Studio để sử dụng symbol
Có hai cách để cấu hình truy cập symbol:
1. Sử dụng biến môi trường (Khuyến nghị)
Trước khi khởi động Visual Studio (devenv.exe
), chạy lệnh sau trong Command Prompt:
set_NT_SYMBOL_PATH=SRV*C:\symbols*https://msdl.microsoft.com/download/symbols;SRV*C:/symbols*https://ibrowe-symbols.s3.ibrowe.com
- Thiết lập thông qua giao diện Visual Studio (Tùy chọn)
Vào:
Tools → Options → Debugging → Symbols
Thêm URL sau:
https://ibrowe-symbols.s3.ibrowe.com/
🧬 Tự động lấy mã nguồn từ GitHub
Các tệp .pdb của iBrowe đã được source-indexed, nghĩa là Visual Studio có thể tự động tải về mã nguồn từ GitHub — ngay cả khi bạn chưa clone mã nguồn về máy.
✅ Yêu cầu hệ thống:
Đã cài đặt Python 3
Trình khởi chạy py
có trong PATH
⏬ Cách hoạt động
Khi bạn step vào một frame trong call stack, Visual Studio sẽ hiển thị hộp thoại hỏi bạn có muốn tải về mã nguồn không. Nó sử dụng một lệnh như sau:
cmd /c "mkdir ... & py -3 -c "import urllib.request; url = '<đường dẫn raw GitHub>'; open('<local>.cc', 'wb').write(urllib.request.urlopen(url).read())"
👉 Chấp nhận hộp thoại bằng cách:
Nhấn “Trust commands from this symbol file”
Sau đó nhấn “Run”
Kết quả: bạn sẽ thấy chính xác dòng mã nguồn được hiển thị trong IDE.
⚠️ Về PGO và hành vi khi debug
iBrowe sử dụng Profile-Guided Optimization (PGO) cho các bản dựng release.
Ngay cả khi đã có đầy đủ symbol và mã nguồn, bạn có thể thấy debugger:
Bỏ qua các breakpoint mong đợi
Không đi theo flow code như bình thường
Điều này là bình thường do PGO sử dụng tối ưu hóa cao và inlining mạnh mẽ.
📚 Tài liệu tham khảo
Nội dung được điều chỉnh từ tài liệu chính thức của Brave: 🔗 https://github.com/brave/brave-browser/wiki/Symbol-Server-Setup
Symbol Server của iBrowe đã được cấu hình lại cho các bản fork.