2013-08-15 23 views
9

Tôi gặp sự cố với tệp biểu tượng. Tôi đã thử nghiệm với các đường dẫn tập tin biểu tượng và thiết lập đường dẫn như sau:Windbg và các tệp biểu tượng

srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\driver2\objchk_win7_x86\i386 

Nhưng sau đó tôi đã thay đổi nó như sau:

srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386 

Tôi đã thay đổi driver2 với mydriver trong đường dẫn: đây là đường dẫn nơi tệp .pdb cho trình điều khiển của tôi được đặt. Vấn đề là .sympath in đường dẫn bên phải như hình dưới đây:

kd> .sympath 
Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386 
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386 

Nhưng vẫn không tìm thấy biểu tượng cho trình điều khiển. Nếu tôi chạy lệnh .reload, chúng ta có thể thấy rằng WinDbg đang tìm kiếm .pdb trong thư mục driver2/thay vì thư mục mydriver /.

kd> .reload /f mydriver.sys 
SYMSRV: c:\symbols\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found 
SYMSRV: http://msdl.microsoft.com/download/symbols/mydriver.pdb/3D655E533B0449A38D7AB0AF637CE9201/mydriver.pdb not found 
SYMSRV: c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found 
DBGHELP: c:\users\myuser\desktop\driver2\objchk_win7_x86\i386\mydriver.pdb - file not found 
*** ERROR: Module load completed but symbols could not be loaded for mydriver.sys 
DBGHELP: mydriver - no symbols loaded 

Tôi đã xóa tất cả các không gian làm việc, đóng WinDbg, khởi động lại Windows, nhưng driver2/entry vẫn còn đó: nó phải là trong bộ nhớ cache không gian làm việc mặc định hoặc ở đâu đó. Làm thế nào tôi có thể xóa toàn bộ các thiết lập cá nhân của WinDbg bao gồm những cache, vì vậy tôi có thể khởi động lại WinDbg và được đi với driver2/path và làm cho nó sử dụng mydriver /.

Tôi cũng có thể giải quyết sự cố khi đổi tên thư mục/mydriver lại thành driver2 /, nhưng tôi không muốn giải quyết vấn đề như vậy. Tôi muốn hiểu những gì đang xảy ra và giải quyết nó tốt nhất có thể.

Trả lời

5
!sym noisy 

sẽ cho bạn biết lý do tại sao nó không muốn tải pdb. Có lẽ bạn đã xây dựng lại trình điều khiển của bạn và các pdb guid hoặc pdb tuổi không còn phù hợp. Nếu bạn chắc chắn rằng bạn đã xây dựng các tập tin cùng một nguồn bạn có thể buộc tải pdb của bạn bằng cách

.reload /i /f yourdriver.sys 

/i là chuyển đổi kỳ diệu để tải cũng PDBs không hạnh phúc. Chuyển đổi này sẽ không tải bất kỳ trình điều khiển nào từ máy chủ biểu tượng của bạn nhưng nó sẽ chỉ xem xét các đường dẫn tệp cục bộ để tải trình điều khiển của bạn. Ngoài ra các thư mục lưu trữ biểu tượng (SRV *) không được xem xét vì sẽ có nhiều phiên bản để lựa chọn. Nhưng nếu .sympath của bạn trực tiếp trỏ tới pdb của bạn, nó sẽ được tải.

+0

/tôi làm việc cho tôi, trong trường hợp của tôi, tôi sử dụng windbg 6.2.8299.0 Phiên bản AMD64 trên Windows 7 với SP1 để gỡ lỗi tệp đầy đủ. Tôi rất chắc chắn các .sympath là chính xác, và tôi sử dụng symchk để xác minh .dll và .pdb được kết hợp hoàn hảo. Nhưng windbg vẫn từ chối tải pdb. BTW, từ trợ giúp windbg,/i cũng ngụ ý/f ngay cả khi bạn chưa chỉ định/f flag. – zhaorufei

0

Trình điều khiển ban đầu được biên dịch & được xây dựng trong đường dẫn driver2 chưa? Vị trí của mydriver.sys là gì?

For example assume I have symbol path 'c:\users\rahulsundar\desktop' set and try to load ntdll.dll, then it displays below error, 

0:000> .reload ntdll.dll 
DBGHELP: c:\users\rahulsundar\desktop\ntdll.pdb - file not found 
DBGHELP: c:\users\rahulsundar\desktop\dll\ntdll.pdb - file not found 
DBGHELP: c:\users\rahulsundar\desktop\symbols\dll\ntdll.pdb - file not found 
DBGHELP: C:\Windows\SYSTEM32\ntdll.pdb - file not found 
DBGHELP: ntdll.pdb - file not found 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - 
DBGHELP: ntdll - export symbols 

Note: Windbg by default searches ntdll.pdb from the same location 'C:\Windows\SYSTEM32' 

Một cách để giải quyết vấn đề hiện tại, từ đăng nhập nhưng rõ ràng rằng windbg hy vọng tập tin pdb trong thư mục 'C: \ Users \ myuser \ desktop \ mydriver \ objchk_win7_x86 \ i386 \ mydriver.pdb \ 3D655E533B0449A38D7AB0AF637CE9201 \ mydriver .pdb '.

Vì vậy, tự tạo thư mục cho đến 'mydriver.pdb \ 3D655E533B0449A38D7AB0AF637CE9201' và đặt pdb tập tin đó.

Đây chỉ là một cách tiêu chuẩn (binaryfoldername \ hashid \ pdbfile) mà Windows mong đợi biểu tượng cho nhị phân.

+0

Xin chào, vâng tôi có thể giải quyết vấn đề như vậy.Tôi cũng có thể giải quyết nó bằng cách đổi tên mydriver thành thư mục driver2. Lần đầu tiên tôi biên dịch trình điều khiển trong thư mục driver2, sau đó đổi tên thư mục thành mydriver, xóa tất cả các tập tin excpect mydriver.c và biên dịch lại. Tôi đã dừng trình điều khiển, xóa nó và khởi động lại hệ thống Windows đã được gỡ lỗi; Tôi cũng khởi động lại hệ thống gỡ lỗi. Tôi nghĩ, vấn đề là WinDbg đã lưu đường dẫn này ở đâu đó trong bộ nhớ cache và tôi quan tâm đến vị trí đó; khung nhìn workspace mặc định cũng được thay đổi khi debuggee kết nối với Windbg, do đó workspace phải được lưu ở đâu đó, mặc dù tôi xóa nó. – eleanor

+0

Có vẻ như đối với các tập tin trình điều khiển các đường dẫn đang được tích lũy. Không chắc chắn nếu nó là một lỗi thực sự trong windbg hoặc lỗi tài liệu. Nếu bạn nghi ngờ nó là một lỗi trong Windbg, bạn có thể thử cài đặt phiên bản mới nhất của windbg để xem nó có khắc phục được sự cố không. Bạn cũng có thể thử xóa các không gian làm việc mặc định thích hợp (user \ kernel \ remote etc) và lưu nó theo mặc định bằng File-> Save WS as-> Default trong chế độ thích hợp (user \ kernel \ remote) –

+0

hữu ích: http://msdn.microsoft.com/en-us/library/windows/hardware/ff560260(v=vs.85).aspx – zinking

0

Better cách để giải quyết này - bật sim ồn ào và nhìn vào con đường tại .reload/f my_driver.sys hoặc thêm con đường mới để .sympath [+] path/to/pdb và làm tương tự

Các vấn đề liên quan