{'fraction_non_alphanumeric': 0.023890784982935155, 'fraction_numerical': 0.0, 'mean_word_length': 5.046391752577319, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Hardware Support for Software Debugging ; An Overview

Designing a dependable software is a hard, if not an impossible task. Debugging is necessary for a dependable software product, which occupies a large amount of resources (time and money) in software development. Concurrency defects even have made debugging even harder. Thus, these days, software products are usually shipped with known and unknown bugs. Run-time verification is a technique that monitors the behavior of a program as it runs and verify the conformance of this behavior with the specification of the program. The monitoring take place at software level by instrumenting the program with verification statements, or at a lower level, it can be done by the underlying hardware which is faster but more complex. In last two decades much effort has been spent to design hardware architecture serving to this end. In this paper, we give a brief overview of the recent developments in this field, which seemingly is striving to “Hardware Support for Software Debugging”. Based on an architecture contribution to debugging, we classify it to “Architectures for postmortem analysis” and “Software Monitors”.