.


:




:

































 

 

 

 


Debugging for embedded systems




In contrast to the general purpose computer software design environment, a primary characteristic of embedded environments is the sheer number of different platforms available to the developers (CPU architectures, vendors, operating systems and their variants). Embedded systems are, by definition, not general-purpose designs: they are typically developed for a single task (or small range of tasks), and the platform is chosen specifically to optimize that application. Not only does this fact make life tough for embedded system developers, it also makes debugging and testing of these systems harder as well, since different debugging tools are needed in different platforms. It is necessary

to identify and fix bugs in the system (e.g. logical or synchronization problems in the code, or a design error in the hardware);

to collect information about the operating states of the system that may then be used to analyse the system: to find ways to boost its performance or to optimize other important characteristics (e.g. energy consumption, reliability, real-time response etc.).

Anti-debugging

Anti-debugging is "the implementation of one or more techniques within computer code that hinders attempts at reverse engineering or debugging a target process". It is actively used in legitimate copy-protection schemas, but is also used by malware to complicate its detection and elimination.

Techniques used in anti-debugging include:

API-based: check for the existence of a debugger using system information

Exception-based: check to see if exceptions are interfered with

Process and thread blocks: check whether process and thread blocks have been manipulated

Modified code: check for code modifications made by a debugger handling software breakpoints

Hardware- and register-based: check for hardware breakpoints and CPU registers

Timing and latency: check the time taken for the execution of instructions

Detectingandpenalizingdebugger

 

Exercise 5. Questions to answer.

1. What is a computer program? 2. What does it consist of? 3. Can we use words software, applicationsoftware and a program interchangeably? 4. What process is running a program? 5. Does an operating system run the program? 6. Where is a program loaded from in computers with Von Neumann architecture or Harvard architecture? 7. What does a computer program consist of? 8. What code are the instructions in a computer program made in? 9. What is an assembly language? 10. What is a programming in neural network computers? 11. How does a programm look like in virtual machines? 12. Can you distinguish the program and the dats in the working computer? 13. What is an algorithm? 14. What is called a computer program development? 15. What is another definition of developing the program in the context of computer programming? 16. What has a programmer the more involved in? 17. What is debugging? 18. Is the debugging the same in different systems? 19. Can you mention several techniques of debugging? 20. What is a print debugging? 21. What is a remote dbugging? 22. What is a post-mortem debugging? 23. What is a Delta debugging? 24. What is aSaff Squeeze? 25. What is a primary characteristic of embedded environments? 26. What are embedded systems? 27. What is necessary to do while debugging? 28. What process is anti-debugging? 29. What are the techniques of anti-debugging? 30. What do you think about debugging? Is it an easy process?

 

Exercise 6. TranslatefromRussianintoEnglish.

Adobe Illustrator

Windows. .





:


: 2018-10-17; !; : 168 |


:

:

, ; , .
==> ...

1566 - | 1359 -


© 2015-2024 lektsii.org - -

: 0.009 .