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...

Full description

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==