Skip to main content

Model Checking Machine Code with the GNU Debugger

  • Conference paper

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 3639))

Abstract

Embedded software verification is an important verification problem that requires the ability to reason about the timed semantics of concurrent behaviors at a low level of atomicity. Combining a cycle-accurate debugger with model checking algorithms provides an accurate model of software execution at the machine-code level while supporting concurrency and allowing abstractions to manage state explosion. We report on the design and implementation of such a model checker using the GNU debugger (gdb) with different processor backends. A significant feature of the resulting tool is that we can adjust the level of atomicity during the model checking run to reduce state explosion while focusing on behaviors that are likely to generate an error.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Ball, T., Rajamani, S.: The SLAM toolkit. In: Berry, G., Comon, H., Finkel, A. (eds.) CAV 2001. LNCS, vol. 2102, pp. 260–264. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  2. Ball, T., Rajamani, S.K.: Bebop: A symbolic model checker for boolean programs. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 113–130. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  3. Behrmann, G., Larsen, K.G., Pelánek, R.: To store or not to store. In: Hunt Jr., W.A., Somenzi, F. (eds.) CAV 2003. LNCS, vol. 2725, pp. 433–445. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  4. Clarke, E., Kroening, D.: Hardware verification using ANSI-C programs as a reference. In: Proceedings of ASP-DAC 2003, Yokohama City, Japan, pp. 308–311. IEEE Computer Society Press, Los Alamitos (2003)

    Google Scholar 

  5. Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In: Jensen, K., Podelski, A. (eds.) TACAS 2004. LNCS, vol. 2988, pp. 168–176. Springer, Heidelberg (2004)

    Chapter  Google Scholar 

  6. Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Zheng, R., Zheng, H.: Bandera: extracting finite-state models from java source code. In: International Conference on Software Engineering, pp. 439–448 (2000)

    Google Scholar 

  7. Godefroid, P.: Software model checking: The VeriSoft approach. Technical report, Bell Laboratories, Lucent Technologies (2003)

    Google Scholar 

  8. Graf, S., Mounier, L. (eds.): Model Checking Software: 11th International SPIN Workshop. LNCS, vol. 2989. Springer, Heidelberg (2004)

    MATH  Google Scholar 

  9. Henzinger, T.A., Jhala, R., Majumdar, R., Sutre, G.: Software verification with Blast. In: Ball, T., Rajamani, S.K. (eds.) SPIN 2003. LNCS, vol. 2648, pp. 235–239. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  10. Holzmann, G.J.: State compression in Spin. In: Proceedings of the Third Spin Workshop, April 1997. Twente University, The Netherlands (1997)

    Google Scholar 

  11. Holzmann, G.J., Joshi, R.: Model-driven software verification. In: Graf and Mounier [8], pp. 76–91

    Google Scholar 

  12. Hyman, H.: Comments on a problem in concurrent programming control. Communications of the ACM 9(1), 45 (1966)

    Article  Google Scholar 

  13. Mehler, T., Edelkamp, S.: Directed error detection in C++ with the assembley-level model checker StEAM. In: Graf and Mounier [8], pp. 39–56

    Google Scholar 

  14. Nethercote, N.: Dynamic Binary Analysis and Instrumentation. PhD thesis, Computer Laboratory, University of Cambridge, United Kingdom (September 2004)

    Google Scholar 

  15. Penix, J., Visser, W., Pasaranu, C., Engstrom, E., Larson, A., Weininger, N.: Verifying time partitioning in the DEOS scheduling kernel. In: 22nd International Conference on Software Engineering (ICSE 2000), Limerick, Ireland, pp. 488–497. ACM, New York (2000)

    Google Scholar 

  16. Regehr, J., Reid, A., Webb, K.: Eliminating stack overflow by abstract interpretation. In: Alur, R., Lee, I. (eds.) EMSOFT 2003. LNCS, vol. 2855, pp. 306–322. Springer, Heidelberg (2003)

    Chapter  Google Scholar 

  17. Robby, Dwyer, M.B., Hatcliff, J.: Bogor: An extensible and highly-modular model checking framework. ACM SIGSOFT Software Engineering Notes 28(5), 267–276 (2003)

    Article  Google Scholar 

  18. Robby, Dwyer, M.B., Hatcliff, J., Iosif, R.: Space-reduction strategies for model checking dynamic software. Electronic Notes in Theorical Computer Science 89(3) (2003)

    Google Scholar 

  19. Rungta, N., Mercer, E.G.: A context-sensitive structural heuristic for guided search model checking (2005), http://vv.cs.byu.edu/publications/papers/guided-search.pdf

  20. Visser, W., Havelund, K., Brat, G., Park, S., Lerda, F.: Model checking programs. Automated Software Engineering Journal 10(2) (April 2003)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2005 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Mercer, E., Jones, M. (2005). Model Checking Machine Code with the GNU Debugger. In: Godefroid, P. (eds) Model Checking Software. SPIN 2005. Lecture Notes in Computer Science, vol 3639. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11537328_20

Download citation

  • DOI: https://doi.org/10.1007/11537328_20

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-28195-5

  • Online ISBN: 978-3-540-31899-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics