2010-04-16 28 views
5

Tôi đã theo dõi Tess Ferrandez' blog để thiết lập chủ đề tùy chỉnh trong WinDbg.Làm cách nào để tạo một cửa sổ '.cmdtree' khi khởi động trong WinDbg?

Tôi cũng đã bắt đầu tung ra WinDbg tự động với -c ".cmdtree c: \ mycmdtree.txt"

này mở ra một cách chính xác tập tin cmdtree tôi như là một cửa sổ lệnh, nhưng tôi không thể có được nó cập cảng đúng cách. Vấn đề xuất hiện là cửa sổ 'lệnh' chỉ có thể được mở sau khi bạn mở tệp DMP, nhưng mở tệp DMP sẽ chuyển bạn ra khỏi không gian làm việc 'cơ sở', do đó mọi thay đổi đối với không gian làm việc của bạn sẽ không được lưu.

Bất kỳ ý tưởng nào?

+0

Bạn có thực sự quản lý việc thiết lập ghép cửa sổ với câu trả lời được cung cấp không? Tôi có 2 vấn đề: a) nó docks, nhưng không phải ở vị trí tôi thích và b) nó luôn luôn docks một cửa sổ thứ hai –

Trả lời

7

Yêu cầu đơn giản này hóa ra rất phức tạp. Các vị trí cửa sổ của WinDbg được lưu trong một vùng làm việc. WinDbg có nhiều không gian làm việc mặc định:

  • Base - đây là không gian làm việc được sử dụng trước khi bạn bắt đầu gỡ lỗi (không bãi mở, không exe mở, không kèm theo bất cứ điều gì)
  • mỗi tập tin dump - cho mỗi đổ bạn mở, bạn có một không gian làm việc cho tệp này
  • Mỗi tệp thi hành - cho mỗi tệp thi hành mà bạn mở.
  • chế độ người dùng - được sử dụng khi bạn đang sống với người sử dụng chế độ gỡ lỗi
  • Kernel-mode - được sử dụng khi bạn đang kernel-mode gỡ lỗi
  • mỗi kiến ​​trúc máy - 1 cho x64, 1 cho x86, & 1 cho IA64
  • từ xa - được sử dụng khi bạn đang gỡ lỗi từ xa

Đối với bất kỳ loại nhất định của debug (tức là sống với người sử dụng chế độ hoặc phân tích bãi post-mortem) bạn thường kết thúc với sự kết hợp của các thiết lập của cơ sở + loại của bạn gỡ lỗi.

Nếu bạn mở tệp kết xuất, bạn nhận được CƠ SỞ + Mỗi tệp kết xuất Nếu bạn gặp gỡ chế độ người dùng, bạn sẽ nhận được BASE + Chế độ người dùng Nếu bạn sống gỡ lỗi hạt nhân máy x64, bạn nhận được BASE + Kernel- mode + x64

Tất cả các thay đổi bạn thực hiện ở bất kỳ chế độ cụ thể nào đều được lưu trong không gian làm việc được chồng chéo cuối cùng. Điều này có nghĩa rằng nếu chúng ta mở một tệp kết xuất (vì vậy chúng tôi là Base + Per dump), bất kỳ thay đổi nào đối với cài đặt sẽ được lưu trong không gian làm việc cho bãi chứa này.

Ngoài không gian làm việc được xây dựng và tất cả các kết hợp của chúng, có không gian làm việc được đặt tên (khách hàng). Đây sẽ là khi bạn vào File> Save Workspace, và cung cấp một tên để lưu tất cả các thiết lập mà bạn có thể kích hoạt khi khởi động Windbg bằng cách sử dụng đối số dòng lệnh -W.

Quay lại câu hỏi của bạn. Làm thế nào tôi có thể nhận được .cmdtree để mở? Trong không gian làm việc cơ bản bạn không thể. Nhiều cửa sổ chỉ khả dụng khi trình gỡ lỗi KHÔNG ở trạng thái không hoạt động (trong không gian làm việc BASE). Một khi bạn nhận được trình gỡ rối vào bất kỳ trạng thái hoạt động nào của nó, thì các cửa sổ này có sẵn.

Sự cố bạn gặp phải là để thiết lập mọi thứ theo cách bạn muốn, bạn phải có trình gỡ lỗi ở trạng thái hoạt động (mở exe, mở kết xuất, gỡ lỗi trực tiếp) và khi bạn truy cập giúp bạn tiết kiệm bố trí cửa sổ, nó cũng sẽ tiết kiệm mà exe bạn đã mở, hoặc đổ, hoặc gỡ lỗi trực tiếp bạn đang làm.

Đặt cược tốt nhất của bạn là chỉ cần làm những gì bạn đã làm, đó là chỉ cần sử dụng -c trong sổ đăng ký (HKEY_CLASSES_ROOT \ WinDbg.DumpFile.1 \ shell \ Open \ command). Điều này sẽ cho phép bạn chỉ cần nhấp đúp vào một bãi chứa và nhận được các tùy chọn dòng lệnh mỗi khi bạn đang làm phân tích dump. Sau đó, bạn có thể tạo một lối tắt tới windbg cũng kết hợp dòng lệnh để các cài đặt này sẽ được áp dụng cho các loại gỡ lỗi khác mà bạn thực hiện.

Đây là dòng lệnh của tôi từ regkey trên:

"c: \ gỡ rối \ x64 \ windbg.exe" -z "% 1" -Q -W nội -c" .load winde.dll; .enable_unicode 1; .ignore_missing_pages 1; .logopen/t C: \ Users \ jasone \ Nhật trình \ debug.log; aS .p .process/p/r; aS .t .thread/p/r; aS! p! process ; aS! t! chủ đề; aS .f .frame; aS dv dv/V/i/t; aS .f .frame "

Điều này làm gì?

Khởi chạy trình gỡ rối, đính kèm vào tệp kết xuất, KHÔNG có lời nhắc để lưu cài đặt vùng làm việc, Mở không gian làm việc "Nội bộ" của tôi (không gian làm việc được tạo) và chạy các lệnh này để tải tiện ích mở rộng trình gỡ lỗi, tùy chọn thiết lập và tạo bí danh làm cho cuộc sống của tôi dễ dàng hơn.

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