In this partI’m going to present the main building block of a debugger dịch - In this partI’m going to present the main building block of a debugger Việt làm thế nào để nói

In this partI’m going to present th

In this part
I’m going to present the main building block of a debugger’s implementation on Linux – the ptrace system call. All the code in this article is developed on a 32-bit Ubuntu machine. Note that the code is very much platform specific, although porting it to other platforms shouldn’t be too difficult.

Motivation
To understand where we’re going, try to imagine what it takes for a debugger to do its work. A debugger can start some process and debug it, or attach itself to an existing process. It can single-step through the code, set breakpoints and run to them, examine variable values and stack traces. Many debuggers have advanced features such as executing expressions and calling functions in the debbugged process’s address space, and even changing the process’s code on-the-fly and watching the effects.

Although modern debuggers are complex beasts [1], it’s surprising how simple is the foundation on which they are built. Debuggers start with only a few basic services provided by the operating system and the compiler/linker, all the rest is just a simple matter of programming.

Linux debugging – ptrace
The Swiss army knife of Linux debuggers is the ptrace system call [2]. It’s a versatile and rather complex tool that allows one process to control the execution of another and to peek and poke at its innards [3]. ptrace can take a mid-sized book to explain fully, which is why I’m just going to focus on some of its practical uses in examples.

Let’s dive right in.

Stepping through the code of a process
I’m now going to develop an example of running a process in "traced" mode in which we’re going to single-step through its code – the machine code (assembly instructions) that’s executed by the CPU. I’ll show the example code in parts, explaining each, and in the end of the article you will find a link to download a complete C file that you can compile, execute and play with.

The high-level plan is to write code that splits into a child process that will execute a user-supplied command, and a parent process that traces the child. First, the main function:
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
Trong phần này
tôi sẽ trình bày các khối xây dựng chính của một trình gỡ lỗi thực hiện trên Linux-ptrace hệ thống gọi. Tất cả các mã trong bài viết này được phát triển trên một máy 32-bit Ubuntu. Lưu ý rằng mã này là rất nhiều nền tảng cụ thể, mặc dù porting nó vào hệ điều hành khác không nên quá khó khăn.

động lực
để hiểu nơi chúng tôi đang diễn ra, thử tưởng tượng những gì nó cần cho một trình gỡ lỗi để làm công việc của mình. Một trình gỡ lỗi có thể bắt đầu một số quá trình và gỡ lỗi nó hoặc đính kèm chính nó để một quá trình hiện tại. Nó có thể bước duy nhất thông qua các mã, thiết lập điểm ngắt và chạy với họ, kiểm tra giá trị biến và ngăn xếp dấu vết. Nhiều debuggers đã nâng cao tính năng chẳng hạn như thực hiện các biểu thức và gọi chức năng trong quá trình debbugged địa chỉ không gian, và thậm chí thay đổi của quá trình mã on-the-fly và xem hiệu ứng.

mặc dù hiện đại debuggers phức tạp con thú [1], nó là đáng ngạc nhiên như thế nào đơn giản là nền tảng mà trên đó họ được xây dựng. Debuggers bắt đầu với chỉ một vài dịch vụ cơ bản được cung cấp bởi hệ điều hành, trình biên dịch/linker và tất cả phần còn lại là chỉ là một vấn đề đơn giản của chương trình.

Linux gỡ lỗi-ptrace
Dao quân đội Thụy sĩ của Linux debuggers là các cuộc gọi hệ thống ptrace [2]. Nó là một công cụ linh hoạt và khá phức tạp mà cho phép một quá trình kiểm soát việc thi hành của người khác và để peek và poke tại innards của nó [3]. ptrace có thể có một vừa cuốn sách để giải thích đầy đủ, đó là lý do tại sao tôi chỉ sẽ tập trung vào một số sử dụng thực tế của nó trong ví dụ.

của hãy nhảy ngay trong.

Bước qua mã của một quá trình
tôi bây giờ sẽ phát triển một ví dụ về chạy một quá trình trong "NWOBHM" chế độ mà trong đó chúng ta sẽ bước duy nhất thông qua mã của nó-mã máy (lắp ráp hướng dẫn) mà được thực hiện bởi CPU. Tôi sẽ hiển thị các ví dụ mã vùng, giải thích mỗi, và cuối cùng của bài viết, bạn sẽ tìm thấy một liên kết để tải về một tập tin C đầy đủ mà bạn có thể biên dịch, thực hiện và chơi với.

kế hoạch cấp cao là để viết mã đó chia tách thành một quá trình con sẽ thực hiện một cung cấp người dùng lệnh, và một quá trình cha mẹ con dấu vết. Trước tiên, các chức năng chính:
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Trong phần này
tôi sẽ trình bày các khối xây dựng chính thực hiện một chương trình gỡ rối trên Linux - hệ thống gọi ptrace. Tất cả các mã trong bài viết này được phát triển trên một máy tính Ubuntu 32-bit. Lưu ý rằng các mã được rất nhiều nền tảng cụ thể, mặc dù porting nó đến các nền tảng khác không phải là quá khó khăn. Động lực Để hiểu rõ chúng ta đang đi, hãy thử tưởng tượng những gì cần cho một trình gỡ lỗi để làm công việc của mình. Một trình gỡ rối có thể bắt đầu một số quá trình và gỡ lỗi nó, hoặc đính kèm chính nó vào một quá trình hiện có. Nó có thể đơn bước qua mã, đặt breakpoint và chạy với họ, kiểm tra các giá trị và ngăn xếp dấu vết. Nhiều gỡ rối có các tính năng tiên tiến như thực hiện các biểu thức và gọi chức năng trong không gian địa chỉ quá trình debbugged, và thậm chí thay đổi mã của quá trình on-the-fly và xem các hiệu ứng. Mặc dù gỡ rối hiện đại là những con thú phức tạp [1], đó là đáng ngạc nhiên như thế nào đơn giản là nền tảng mà trên đó chúng được xây dựng. Gỡ rối bắt đầu chỉ với một vài dịch vụ cơ bản được cung cấp bởi hệ điều hành và trình biên dịch / mối liên kết, tất cả các phần còn lại chỉ là một vấn đề đơn giản của chương trình. Linux gỡ lỗi - ptrace Các con dao quân đội Thụy Sĩ gỡ rối Linux là hệ thống gọi ptrace [2]. Đó là một công cụ linh hoạt và khá phức tạp cho phép một quá trình để kiểm soát việc thực hiện của người khác và nhìn trộm và chọc vào bộ phận bên của nó [3]. ptrace có thể mất một cuốn sách vừa để giải thích đầy đủ, đó là lý do tại sao tôi chỉ cần đi để tập trung vào một số sử dụng thực tế của nó trong ví dụ. Hãy nhảy ngay in Bước qua mã của một quá trình tôi bây giờ sẽ phát triển một ví dụ về chạy một quá trình trong "bắt nguồn từ" chế độ mà trong đó chúng ta sẽ bước đơn thông qua mã của nó - mã máy (hướng dẫn lắp ráp) đó là thực hiện bởi CPU. Tôi sẽ chỉ cho các mã ví dụ trong các bộ phận, giải thích từng, và cuối cùng của bài viết bạn sẽ tìm thấy một liên kết để tải về một tập tin C hoàn chỉnh mà bạn có thể biên dịch, thực hiện và chơi với. Các phương án cao là để viết mã mà chia tách thành một quá trình con sẽ thực thi một lệnh người dùng cung cấp, và một quá trình cha mẹ mà dấu vết đứa trẻ. Đầu tiên, các chức năng chính:















đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2024 I Love Translation. All reserved.

E-mail: