back-in-time debugger in Kotlin
Kotlin is being rapidly adopted not only to create new microservices and Android projects, but also to migrate existing Java infrastructure for its advantages in code development compared to Java. This exponential growth, however, comes with the increased possibility of developers adding code flaws...
- Autores:
-
Orozco González, Andrés Felipe
- Tipo de recurso:
- Trabajo de grado de pregrado
- Fecha de publicación:
- 2023
- Institución:
- Universidad de los Andes
- Repositorio:
- Séneca: repositorio Uniandes
- Idioma:
- eng
- OAI Identifier:
- oai:repositorio.uniandes.edu.co:1992/63666
- Acceso en línea:
- http://hdl.handle.net/1992/63666
- Palabra clave:
- Debugger
Kotlin
MVIKotlin
Ingeniería
- Rights
- openAccess
- License
- Atribución 4.0 Internacional
id |
UNIANDES2_8902bd107058ed4bb6dad55ebd1cafb3 |
---|---|
oai_identifier_str |
oai:repositorio.uniandes.edu.co:1992/63666 |
network_acronym_str |
UNIANDES2 |
network_name_str |
Séneca: repositorio Uniandes |
repository_id_str |
|
dc.title.none.fl_str_mv |
back-in-time debugger in Kotlin |
title |
back-in-time debugger in Kotlin |
spellingShingle |
back-in-time debugger in Kotlin Debugger Kotlin MVIKotlin Ingeniería |
title_short |
back-in-time debugger in Kotlin |
title_full |
back-in-time debugger in Kotlin |
title_fullStr |
back-in-time debugger in Kotlin |
title_full_unstemmed |
back-in-time debugger in Kotlin |
title_sort |
back-in-time debugger in Kotlin |
dc.creator.fl_str_mv |
Orozco González, Andrés Felipe |
dc.contributor.advisor.none.fl_str_mv |
Cardozo Álvarez, Nicolás |
dc.contributor.author.none.fl_str_mv |
Orozco González, Andrés Felipe |
dc.contributor.researchgroup.es_CO.fl_str_mv |
Flag lab |
dc.subject.keyword.none.fl_str_mv |
Debugger Kotlin MVIKotlin |
topic |
Debugger Kotlin MVIKotlin Ingeniería |
dc.subject.themes.es_CO.fl_str_mv |
Ingeniería |
description |
Kotlin is being rapidly adopted not only to create new microservices and Android projects, but also to migrate existing Java infrastructure for its advantages in code development compared to Java. This exponential growth, however, comes with the increased possibility of developers adding code flaws (aka bugs) to applications. Most of the existing debuggers for Kotlin offer mostly breakpoint features and miss on the advantages of back-in-time debuggers to analyze different execution paths and resolve errors by changing the state of the program in the past without the need of "re-running" the code. This dissertation explores a back-in-time debugger implementation for Kotlin based in the MVIKotlin framework. The general usage of this debugger is validated by replicating the use cases exposed for DeloreanJS, but using reactive programming. |
publishDate |
2023 |
dc.date.accessioned.none.fl_str_mv |
2023-01-10T21:23:56Z |
dc.date.available.none.fl_str_mv |
2023-01-10T21:23:56Z |
dc.date.issued.none.fl_str_mv |
2023-01-05 |
dc.type.es_CO.fl_str_mv |
Trabajo de grado - Pregrado |
dc.type.driver.none.fl_str_mv |
info:eu-repo/semantics/bachelorThesis |
dc.type.version.none.fl_str_mv |
info:eu-repo/semantics/acceptedVersion |
dc.type.coar.none.fl_str_mv |
http://purl.org/coar/resource_type/c_7a1f |
dc.type.content.es_CO.fl_str_mv |
Text |
dc.type.redcol.none.fl_str_mv |
http://purl.org/redcol/resource_type/TP |
format |
http://purl.org/coar/resource_type/c_7a1f |
status_str |
acceptedVersion |
dc.identifier.uri.none.fl_str_mv |
http://hdl.handle.net/1992/63666 |
dc.identifier.instname.es_CO.fl_str_mv |
instname:Universidad de los Andes |
dc.identifier.reponame.es_CO.fl_str_mv |
reponame:Repositorio Institucional Séneca |
dc.identifier.repourl.es_CO.fl_str_mv |
repourl:https://repositorio.uniandes.edu.co/ |
url |
http://hdl.handle.net/1992/63666 |
identifier_str_mv |
instname:Universidad de los Andes reponame:Repositorio Institucional Séneca repourl:https://repositorio.uniandes.edu.co/ |
dc.language.iso.es_CO.fl_str_mv |
eng |
language |
eng |
dc.relation.references.es_CO.fl_str_mv |
Liverecorder time travel debugging for java. URL https://undo.io/solutions/products/ java/. [accessed 02-January-2023]. The android profiler, Jul 2021. URL https://developer.android.com/studio/profile/ android-profiler. [accessed 02-January-2023]. Luca Ardito, Riccardo Coppola, Giovanni Malnati, and Marco Torchiano. Effectiveness of kotlin vs. java in android app development tasks. Information and Software Technology, 127:106374, 2020. DOI 10.1016/j.infsof.2020.106374. Madhurima Banerjee, Subham Bose, Aditi Kundu, and Madhuleena Mukherjee. A compar- ative study: Java vs kotlin programming in android application development, 2018. URL http://dx.doi.org/10.26483/ijarcs.v9i3.5978. Lyn Dupré. BUGS in Writing: A Guide to Debugging Your Prose. Revised edition, 1998. ISBN 0-201-37921-X. Bruno Góis Mateus and Matias Martinez. An empirical study on quality of android ap- plications written in kotlin language - empirical software engineering, Jun 2019. URL https://link.springer.com/article/10.1007/s10664-019-09727-4. Arkadii Ivanov. Mvikotlin. URL https://arkivanov.github.io/MVIKotlin/. [accessed 02-January-2023]. Paul Leger, Felipe Ruiz, and Guillermo Victorero. Deloreanjs: A back-in-time debugger for javascript. Software: Practice and Experience, 2022. Matias Martinez and Bruno Gois Mateus. Why did developers migrate android applications from java to kotlin?, Nov 2021. URL https://arxiv.org/abs/2003.12730. Christopher J. Rossbach, Owen S. Hofmann, and Emmett Witchel. Is transactional pro- gramming actually easier?: Proceedings of the 15th acm sigplan symposium on principles and practice of parallel programming, Jan 2010. URL https://dl.acm.org/doi/10.1145/ 1693453.1693462. Richard. Pesch Roland. Shebs Stan., Stallman. Debugging with GDB: The GNU source-level debugger. 12th media services, 2018. William Strunk and E.B. White. The Elements of Style. Longman, fourth edition, 2000. ISBN 0-205-30902-X. |
dc.rights.license.spa.fl_str_mv |
Atribución 4.0 Internacional |
dc.rights.uri.*.fl_str_mv |
http://creativecommons.org/licenses/by/4.0/ |
dc.rights.accessrights.spa.fl_str_mv |
info:eu-repo/semantics/openAccess |
dc.rights.coar.spa.fl_str_mv |
http://purl.org/coar/access_right/c_abf2 |
rights_invalid_str_mv |
Atribución 4.0 Internacional http://creativecommons.org/licenses/by/4.0/ http://purl.org/coar/access_right/c_abf2 |
eu_rights_str_mv |
openAccess |
dc.format.extent.none.fl_str_mv |
34 páginas |
dc.format.mimetype.es_CO.fl_str_mv |
application/pdf |
dc.publisher.es_CO.fl_str_mv |
Universidad de los Andes |
dc.publisher.program.es_CO.fl_str_mv |
Ingeniería de Sistemas y Computación |
dc.publisher.faculty.es_CO.fl_str_mv |
Facultad de Ingeniería |
dc.publisher.department.es_CO.fl_str_mv |
Departamento de Ingeniería Sistemas y Computación |
institution |
Universidad de los Andes |
bitstream.url.fl_str_mv |
https://repositorio.uniandes.edu.co/bitstreams/ee6524b2-d2ac-441e-a1ba-4010b8976837/download https://repositorio.uniandes.edu.co/bitstreams/1fdcb530-7f35-4423-b676-199afd457346/download https://repositorio.uniandes.edu.co/bitstreams/6cea02e8-9732-432e-ac3b-840e50d6d825/download https://repositorio.uniandes.edu.co/bitstreams/36234da1-9b9a-476c-aa7f-9ef6bed0da71/download https://repositorio.uniandes.edu.co/bitstreams/a0d2b529-55c3-4070-bc28-a2ebaa0f8b85/download https://repositorio.uniandes.edu.co/bitstreams/1c818a2e-d55b-455a-ae14-eeac59d5724f/download https://repositorio.uniandes.edu.co/bitstreams/33324284-7f2c-4e56-b56c-433ce384df34/download https://repositorio.uniandes.edu.co/bitstreams/3d47d3cd-0007-4e81-93c5-9c9016bb0ced/download |
bitstream.checksum.fl_str_mv |
63e5970b2f5359cdc3b94ecd636dec33 bd0ab8ea239a54941071bad7266e6458 29ab5f7e832603616ad3dd5cb613408d 5e94993bd947c81cc1b4823d7841370e 5aa5c691a1ffe97abd12c2966efcb8d6 0175ea4a2d4caec4bbcc37e300941108 4491fe1afb58beaaef41a73cf7ff2e27 985480f4019385a197fbd9e13610e008 |
bitstream.checksumAlgorithm.fl_str_mv |
MD5 MD5 MD5 MD5 MD5 MD5 MD5 MD5 |
repository.name.fl_str_mv |
Repositorio institucional Séneca |
repository.mail.fl_str_mv |
adminrepositorio@uniandes.edu.co |
_version_ |
1812133898905190400 |
spelling |
Atribución 4.0 Internacionalhttp://creativecommons.org/licenses/by/4.0/info:eu-repo/semantics/openAccesshttp://purl.org/coar/access_right/c_abf2Cardozo Álvarez, Nicolásvirtual::6416-1Orozco González, Andrés Felipeed6c184d-1248-4ecd-9a81-513e9db0cdea600Flag lab2023-01-10T21:23:56Z2023-01-10T21:23:56Z2023-01-05http://hdl.handle.net/1992/63666instname:Universidad de los Andesreponame:Repositorio Institucional Sénecarepourl:https://repositorio.uniandes.edu.co/Kotlin is being rapidly adopted not only to create new microservices and Android projects, but also to migrate existing Java infrastructure for its advantages in code development compared to Java. This exponential growth, however, comes with the increased possibility of developers adding code flaws (aka bugs) to applications. Most of the existing debuggers for Kotlin offer mostly breakpoint features and miss on the advantages of back-in-time debuggers to analyze different execution paths and resolve errors by changing the state of the program in the past without the need of "re-running" the code. This dissertation explores a back-in-time debugger implementation for Kotlin based in the MVIKotlin framework. The general usage of this debugger is validated by replicating the use cases exposed for DeloreanJS, but using reactive programming.Esta tesis presenta un back-in-time debugger para Kotlin basado en MVIKotlin. Se exploran algunos de los casos de uso de este tipo de debuggers, así mismo se muestra su uso a través de programación basada en eventos (reactiva); así como también, se explican detalles de la forma en la que se implementó el debugger extendiendo el proyecto inicial de MVIKotlin.Ingeniero de Sistemas y ComputaciónPregrado34 páginasapplication/pdfengUniversidad de los AndesIngeniería de Sistemas y ComputaciónFacultad de IngenieríaDepartamento de Ingeniería Sistemas y Computaciónback-in-time debugger in KotlinTrabajo de grado - Pregradoinfo:eu-repo/semantics/bachelorThesisinfo:eu-repo/semantics/acceptedVersionhttp://purl.org/coar/resource_type/c_7a1fTexthttp://purl.org/redcol/resource_type/TPDebuggerKotlinMVIKotlinIngenieríaLiverecorder time travel debugging for java. URL https://undo.io/solutions/products/ java/. [accessed 02-January-2023].The android profiler, Jul 2021. URL https://developer.android.com/studio/profile/ android-profiler. [accessed 02-January-2023].Luca Ardito, Riccardo Coppola, Giovanni Malnati, and Marco Torchiano. Effectiveness of kotlin vs. java in android app development tasks. Information and Software Technology, 127:106374, 2020. DOI 10.1016/j.infsof.2020.106374.Madhurima Banerjee, Subham Bose, Aditi Kundu, and Madhuleena Mukherjee. A compar- ative study: Java vs kotlin programming in android application development, 2018. URL http://dx.doi.org/10.26483/ijarcs.v9i3.5978.Lyn Dupré. BUGS in Writing: A Guide to Debugging Your Prose. Revised edition, 1998. ISBN 0-201-37921-X.Bruno Góis Mateus and Matias Martinez. An empirical study on quality of android ap- plications written in kotlin language - empirical software engineering, Jun 2019. URL https://link.springer.com/article/10.1007/s10664-019-09727-4.Arkadii Ivanov. Mvikotlin. URL https://arkivanov.github.io/MVIKotlin/. [accessed 02-January-2023].Paul Leger, Felipe Ruiz, and Guillermo Victorero. Deloreanjs: A back-in-time debugger for javascript. Software: Practice and Experience, 2022.Matias Martinez and Bruno Gois Mateus. Why did developers migrate android applications from java to kotlin?, Nov 2021. URL https://arxiv.org/abs/2003.12730.Christopher J. Rossbach, Owen S. Hofmann, and Emmett Witchel. Is transactional pro- gramming actually easier?: Proceedings of the 15th acm sigplan symposium on principles and practice of parallel programming, Jan 2010. URL https://dl.acm.org/doi/10.1145/ 1693453.1693462.Richard. Pesch Roland. Shebs Stan., Stallman. Debugging with GDB: The GNU source-level debugger. 12th media services, 2018.William Strunk and E.B. White. The Elements of Style. Longman, fourth edition, 2000. ISBN 0-205-30902-X.201730058Publicationhttps://scholar.google.es/citations?user=3iTzjQsAAAAJvirtual::6416-10000-0002-1094-9952virtual::6416-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::6416-1a77ff528-fc33-44d6-9022-814f81ef407avirtual::6416-1ORIGINALtrabajoGrado.pdftrabajoGrado.pdfTrabajo de gradoapplication/pdf1150370https://repositorio.uniandes.edu.co/bitstreams/ee6524b2-d2ac-441e-a1ba-4010b8976837/download63e5970b2f5359cdc3b94ecd636dec33MD54autorizacion.pdfautorizacion.pdfHIDEapplication/pdf178083https://repositorio.uniandes.edu.co/bitstreams/1fdcb530-7f35-4423-b676-199afd457346/downloadbd0ab8ea239a54941071bad7266e6458MD53THUMBNAILautorizacion.pdf.jpgautorizacion.pdf.jpgIM Thumbnailimage/jpeg16354https://repositorio.uniandes.edu.co/bitstreams/6cea02e8-9732-432e-ac3b-840e50d6d825/download29ab5f7e832603616ad3dd5cb613408dMD56trabajoGrado.pdf.jpgtrabajoGrado.pdf.jpgIM Thumbnailimage/jpeg5663https://repositorio.uniandes.edu.co/bitstreams/36234da1-9b9a-476c-aa7f-9ef6bed0da71/download5e94993bd947c81cc1b4823d7841370eMD58LICENSElicense.txtlicense.txttext/plain; charset=utf-81810https://repositorio.uniandes.edu.co/bitstreams/a0d2b529-55c3-4070-bc28-a2ebaa0f8b85/download5aa5c691a1ffe97abd12c2966efcb8d6MD51CC-LICENSElicense_rdflicense_rdfapplication/rdf+xml; charset=utf-8908https://repositorio.uniandes.edu.co/bitstreams/1c818a2e-d55b-455a-ae14-eeac59d5724f/download0175ea4a2d4caec4bbcc37e300941108MD52TEXTautorizacion.pdf.txtautorizacion.pdf.txtExtracted texttext/plain1163https://repositorio.uniandes.edu.co/bitstreams/33324284-7f2c-4e56-b56c-433ce384df34/download4491fe1afb58beaaef41a73cf7ff2e27MD55trabajoGrado.pdf.txttrabajoGrado.pdf.txtExtracted texttext/plain45741https://repositorio.uniandes.edu.co/bitstreams/3d47d3cd-0007-4e81-93c5-9c9016bb0ced/download985480f4019385a197fbd9e13610e008MD571992/63666oai:repositorio.uniandes.edu.co:1992/636662024-03-13 13:10:42.208http://creativecommons.org/licenses/by/4.0/open.accesshttps://repositorio.uniandes.edu.coRepositorio institucional Sénecaadminrepositorio@uniandes.edu.coWW8sIGVuIG1pIGNhbGlkYWQgZGUgYXV0b3IgZGVsIHRyYWJham8gZGUgdGVzaXMsIG1vbm9ncmFmw61hIG8gdHJhYmFqbyBkZSBncmFkbywgaGFnbyBlbnRyZWdhIGRlbCBlamVtcGxhciByZXNwZWN0aXZvIHkgZGUgc3VzIGFuZXhvcyBkZSBzZXIgZWwgY2FzbywgZW4gZm9ybWF0byBkaWdpdGFsIHkvbyBlbGVjdHLDs25pY28geSBhdXRvcml6byBhIGxhIFVuaXZlcnNpZGFkIGRlIGxvcyBBbmRlcyBwYXJhIHF1ZSByZWFsaWNlIGxhIHB1YmxpY2FjacOzbiBlbiBlbCBTaXN0ZW1hIGRlIEJpYmxpb3RlY2FzIG8gZW4gY3VhbHF1aWVyIG90cm8gc2lzdGVtYSBvIGJhc2UgZGUgZGF0b3MgcHJvcGlvIG8gYWplbm8gYSBsYSBVbml2ZXJzaWRhZCB5IHBhcmEgcXVlIGVuIGxvcyB0w6lybWlub3MgZXN0YWJsZWNpZG9zIGVuIGxhIExleSAyMyBkZSAxOTgyLCBMZXkgNDQgZGUgMTk5MywgRGVjaXNpw7NuIEFuZGluYSAzNTEgZGUgMTk5MywgRGVjcmV0byA0NjAgZGUgMTk5NSB5IGRlbcOhcyBub3JtYXMgZ2VuZXJhbGVzIHNvYnJlIGxhIG1hdGVyaWEsIHV0aWxpY2UgZW4gdG9kYXMgc3VzIGZvcm1hcywgbG9zIGRlcmVjaG9zIHBhdHJpbW9uaWFsZXMgZGUgcmVwcm9kdWNjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSwgdHJhbnNmb3JtYWNpw7NuIHkgZGlzdHJpYnVjacOzbiAoYWxxdWlsZXIsIHByw6lzdGFtbyBww7pibGljbyBlIGltcG9ydGFjacOzbikgcXVlIG1lIGNvcnJlc3BvbmRlbiBjb21vIGNyZWFkb3IgZGUgbGEgb2JyYSBvYmpldG8gZGVsIHByZXNlbnRlIGRvY3VtZW50by4gIAoKCkxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gc2UgZW1pdGUgZW4gY2FsaWRhZCBkZSBhdXRvciBkZSBsYSBvYnJhIG9iamV0byBkZWwgcHJlc2VudGUgZG9jdW1lbnRvIHkgbm8gY29ycmVzcG9uZGUgYSBjZXNpw7NuIGRlIGRlcmVjaG9zLCBzaW5vIGEgbGEgYXV0b3JpemFjacOzbiBkZSB1c28gYWNhZMOpbWljbyBkZSBjb25mb3JtaWRhZCBjb24gbG8gYW50ZXJpb3JtZW50ZSBzZcOxYWxhZG8uIExhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gc2UgaGFjZSBleHRlbnNpdmEgbm8gc29sbyBhIGxhcyBmYWN1bHRhZGVzIHkgZGVyZWNob3MgZGUgdXNvIHNvYnJlIGxhIG9icmEgZW4gZm9ybWF0byBvIHNvcG9ydGUgbWF0ZXJpYWwsIHNpbm8gdGFtYmnDqW4gcGFyYSBmb3JtYXRvIGVsZWN0csOzbmljbywgeSBlbiBnZW5lcmFsIHBhcmEgY3VhbHF1aWVyIGZvcm1hdG8gY29ub2NpZG8gbyBwb3IgY29ub2Nlci4gCgoKRWwgYXV0b3IsIG1hbmlmaWVzdGEgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwgeSBsYSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvcywgcG9yIGxvIHRhbnRvLCBsYSBvYnJhIGVzIGRlIHN1IGV4Y2x1c2l2YSBhdXRvcsOtYSB5IHRpZW5lIGxhIHRpdHVsYXJpZGFkIHNvYnJlIGxhIG1pc21hLiAKCgpFbiBjYXNvIGRlIHByZXNlbnRhcnNlIGN1YWxxdWllciByZWNsYW1hY2nDs24gbyBhY2Npw7NuIHBvciBwYXJ0ZSBkZSB1biB0ZXJjZXJvIGVuIGN1YW50byBhIGxvcyBkZXJlY2hvcyBkZSBhdXRvciBzb2JyZSBsYSBvYnJhIGVuIGN1ZXN0acOzbiwgZWwgYXV0b3IgYXN1bWlyw6EgdG9kYSBsYSByZXNwb25zYWJpbGlkYWQsIHkgc2FsZHLDoSBkZSBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcywgcGFyYSB0b2RvcyBsb3MgZWZlY3RvcyBsYSBVbml2ZXJzaWRhZCBhY3TDumEgY29tbyB1biB0ZXJjZXJvIGRlIGJ1ZW5hIGZlLiAKCg== |