{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2023,10,23]],"date-time":"2023-10-23T13:45:58Z","timestamp":1698068758400},"reference-count":10,"publisher":"Wiley","issue":"2","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":7211,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1987,2]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Enhanced C (EC) is a set\u2010oriented, extensible, C\u2010like language. EC uses data abstractions to define new types. These data abstractions, called clusters, are macro\u2010like devices that perform substitution on the typed syntax tree. Debugging programs that use clusters raise problems that are not encountered in ordinary programming languages. At compile time there is a need to determine and report whether the macro expansion will result in a legal program before this expansion actually takes place. At run\u2010time the problems are how to account for replaced statements and how to handle variables whose types have been established by the clusters, variables that disappear, or variables whose names have been changed.<\/jats:p><jats:p>This article presents these problems and their solutions as implemented by the EC compiler and the EC symbolic debugger.<\/jats:p><jats:p>Similar debugging problems appear in other languages: The need to handle variables at run time is common to all languages that support data abstraction even if the abstractions are procedure oriented; also, a mild form of the problem of the replaced statement appears in inline procedure substitution of Ada. The solutions developed for the EC debugger apply to these cases as well.<\/jats:p>","DOI":"10.1002\/spe.4380170202","type":"journal-article","created":{"date-parts":[[2006,11,18]],"date-time":"2006-11-18T02:07:52Z","timestamp":1163815672000},"page":"79-103","source":"Crossref","is-referenced-by-count":1,"title":["Debugging programs that use macro\u2010oriented data abstractions"],"prefix":"10.1002","volume":"17","author":[{"given":"Jacob","family":"Katzenelson","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Avy","family":"Strominger","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","volume-title":"The C Programming Language","author":"Kernighan B. W.","year":"1978"},{"key":"e_1_2_1_3_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380130702"},{"key":"e_1_2_1_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/359763.359789"},{"key":"e_1_2_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/359763.359771"},{"key":"e_1_2_1_6_2","unstructured":"B.Stroustrup \u2018Classes: an abstract data type facility for the C langauge\u2019 Bell Laboratories Computing Science Report no 84 April1980."},{"key":"e_1_2_1_7_2","doi-asserted-by":"crossref","DOI":"10.1007\/978-1-4684-0126-4","volume-title":"ADA\u2014an Introduction and Reference Manual","author":"Ledgard H.","year":"1981"},{"key":"e_1_2_1_8_2","volume-title":"UNIX User's Manual","author":"Katseff H. P."},{"key":"e_1_2_1_9_2","volume-title":"Lisp Machine Manual, Artificial Intelligence Laboratory","author":"Weinreb D.","year":"1981"},{"key":"e_1_2_1_10_2","unstructured":"T. A.Dolotta S. B.OlssonandA. G.Petruccelli UNIN User's Manual Bell Laboratories 1980. See entry for a. out."},{"key":"e_1_2_1_11_2","volume-title":"UNIX Programmer's Manual, 4.1BSD","year":"1981"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380170202","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380170202","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,22]],"date-time":"2023-10-22T10:11:44Z","timestamp":1697969504000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380170202"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1987,2]]},"references-count":10,"journal-issue":{"issue":"2","published-print":{"date-parts":[[1987,2]]}},"alternative-id":["10.1002\/spe.4380170202"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380170202","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1987,2]]}}}