Systrace dành cho Windows


85

Tôi đang tìm kiếm một tương đương Windows của Systrace hoặc ít nhất strace . Tôi biết về StraceNT , nhưng tự hỏi liệu có bất kỳ lựa chọn thay thế nào nữa không. Cụ thể, tôi đang tìm một cách cụ thể để thực thi các chính sách cuộc gọi hệ thống theo chương trình, mặc dù điều này có thể là sau thực tế chứ không phải chủ động dừng chúng.

Hiện tại có cách nào tốt để làm điều này không?


Câu trả lời:


26

3
Tuy nhiên, nó giống ltrace hơn là strace bởi vì nó bắt các cuộc gọi thư viện hơn là các cuộc gọi tổng hợp.
Michael

@BrunoMartinez: bạn không cần chỉ định địa chỉ bộ nhớ để sử dụng strace.
dùng2284570

38

Một số tùy chọn:

Giám sát quy trình

Ngoài ra, hãy xem bài viết này về các công cụ được tích hợp trong Windows 7:

Công cụ hệ điều hành cốt lõi


3
Tôi chỉ sử dụng ProcessMonitor để tìm hiểu lý do tại sao một quá trình được treo - lượt ra nó đang cố gắng truy cập vào một tập tin mà nó không thể xóa ... sẽ không bao giờ figured it out mà không ProcMon
Jamie Cook

2
Tôi sử dụng khá nhiều trên Linux và gặp câu hỏi này khi đang tìm kiếm công cụ tương tự trên Windows để khắc phục sự cố mà tôi gặp phải với NANT. Tôi đã thử Process Monitor, đặt bộ lọc để chỉ bao gồm Nant.exe và loại trừ mọi thứ khác, cũng đặt bộ lọc chỉ truy cập đăng ký ở những nơi tôi đang gặp sự cố và nhanh chóng tìm ra vấn đề tôi đang gặp phải. Tôi thực sự khuyên bạn nên sử dụng Process Monitor.
hshib

@ djhaskin987: Trong trường hợp của tôi, tôi có một chương trình tải một số tệp; đệm chúng vào ʀᴀᴍ (vì vậy không còn tay cầm) và sụp đổ. Vì không có tay cầm bên trái, giám sát quá trình không giúp được gì.
user2284570

@hshib: vấn đề với trình giám sát quá trình là một quá trình không cần tay cầm để truy cập tệp. Vì vậy, trong trường hợp như của tôi (cố gắng xem tệp cấu hình nào gây ra sự cố) , không có ích gì cả.
dùng2284570

15

Công cụ Dr. Memory ( http://drmemory.org ) đi kèm với một công cụ theo dõi cuộc gọi hệ thống được gọi là drstrace liệt kê tất cả các lệnh gọi hệ thống được thực hiện bởi một ứng dụng đích cùng với các đối số của chúng: http://drmemory.org/strace_for_windows.html

Để thực thi các chính sách cuộc gọi hệ thống theo chương trình, bạn có thể sử dụng các công cụ cơ bản giống như drstrace: nền tảng công cụ DynamoRIO ( http://dynamorio.org ) và thư viện giám sát cuộc gọi hệ thống DrSyscall ( http://drmemory.org/docs/page_drsyscall. html ). Chúng sử dụng công nghệ dịch nhị phân động, công nghệ này sẽ phát sinh một số chi phí (20% -30% ở trạng thái ổn định, nhưng cao hơn nhiều khi chạy mã mới, chẳng hạn như khởi chạy một ứng dụng dành cho máy tính để bàn lớn), có thể phù hợp hoặc có thể không phù hợp với mục đích của bạn.


11

API Monitor trông rất hữu ích cho mục đích này.


Đây là một chương trình tuyệt vời, hiển thị chi tiết các tham số chức năng / giá trị trả về, cho phép bạn ngắt điểm khi đáp ứng các điều kiện nhất định, nhiều phương pháp nối khác nhau nên nó có thể được sử dụng trên rất nhiều quy trình không thích bị kiểm tra.
yuikonnu

6

Đây là một bài viết khá xen kẽ, tôi không biết nó có trúng mục tiêu bạn đang tìm kiếm hay không nhưng tôi nghĩ bạn có thể thấy nó dẫn bạn đi theo hướng bạn muốn.

http://jbremer.org/intercepting-system-calls-on-x86_64-windows/


1
Cảm ơn, điều đó khá tốt. Tôi đoán nó có nghĩa là chúng ta vẫn còn là một chặng đường dài ra một đẹp và strace chức năng trên Windows ...
static_rtti

3

strace có sẵn từ Cygwin trong gói cygwin . Bạn có thể tải xuống từ máy nhân bản Cygwin , ví dụ:

http://mirrors.sonic.net/cygwin/x86_64/release/cygwin/cygwin-2.0.2-1.tar.xz
#      |                      |                              |     |
#      +-----------+----------+                              +--+--+
#                  |                                            |
#               mirror                                       version

strace là một trong số ít chương trình Cygwin không dựa trên Cygwin DLL, vì vậy bạn có thể chỉ cần sao chép strace.exevào nơi bạn muốn và sử dụng nó.


6
Nó tốt, nhưng dường như chỉ hoạt động trên các chương trình cygwin khác. Bạn không thể strace notepad. Nó khởi chạy notepad, nhưng không bắt được bất kỳ cuộc gọi hệ thống nào.
Michael Fox

2
@MichaelFox: Có, nó chỉ bắt các cuộc gọi đến cygwin1.dll.
dùng2284570


1

Strace được hỗ trợ bởi Git , như Michael Fox Đề cập Có thể không hữu ích cho phần mềm phức tạp / windows.


0

Bạn có thể sử dụng trình theo dõi quá trình do Mark Russinovich viết. Đây là một ứng dụng nhỏ tuyệt vời cho phép bạn đính kèm vào bất kỳ tiến trình nào đang chạy trên hệ thống và xem tất cả các lệnh gọi của hệ thống mà tiến trình đó đang thực hiện.

https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx


2
djhaskin987 đã đề cập đến Process Monitor trong câu trả lời trước đó của anh ấy. Bạn nên chỉnh sửa câu trả lời của anh ấy và chỉnh sửa mô tả của bạn vào đó.
unforgettableidSupportsMonica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.