ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation

Software developers often face challenges in terms of quality and productivity to match competitive costs. The software industry seeks options to minimize this cost during different phases of software development and maintenance with improved productivity. Software developers adopt different tools f...

Full description

Bibliographic Details
Main Authors: Nachiketa Chatterjee, Srijoni Majumdar, Partha Pratim Das, Amlan Chakrabarti
Format: Article
Language:English
Published: IEEE 2023-01-01
Series:IEEE Access
Subjects:
Online Access:https://ieeexplore.ieee.org/document/10177171/
_version_ 1797772621913260032
author Nachiketa Chatterjee
Srijoni Majumdar
Partha Pratim Das
Amlan Chakrabarti
author_facet Nachiketa Chatterjee
Srijoni Majumdar
Partha Pratim Das
Amlan Chakrabarti
author_sort Nachiketa Chatterjee
collection DOAJ
description Software developers often face challenges in terms of quality and productivity to match competitive costs. The software industry seeks options to minimize this cost during different phases of software development and maintenance with improved productivity. Software developers adopt different tools for different purposes, such as understanding program behavior, debugging memory issues, debugging concurrency issues, and testing. In this article we study different debugging tools mostly used for program design analysis, thread debugging, and resource management. Stand-alone tools do track static or dynamic control flow, thread activities, etc. But these do not specifically identify the thread work-breakdown-structure, global memory location management, thread-data interaction, etc. to allow good comprehension of the concurrency model of the program. Similarly for resource management, we observe that the <monospace>Valgrind</monospace> addresses a few required features but does not offer automatic garbage collection. Moreover, to address the outcomes of different tools, developers must compile and configure the application in different environments. This is very time-consuming, requires skills in different software paradigms, and is sometimes not supported by the tool itself. As a result, they cannot be used in an inter-operable manner to analyze by relating the different tool&#x2019;s outcomes. In this study, we conduct a detailed survey of the available tools and techniques and their limitations in identifying gaps. We address these gaps by implementing the tools for different phases of software development and maintenance. For example, a concurrency model detector based on thread behavior, resource debugger with features of automatic garbage collection, etc. can collectively inter-operate within our designed open-source tool framework Parallelc-Assist to address the common requests of the developers in one toolset. The tool is built upon open-source dynamic instrumentation tool PIN and supports a wide variety of IDEs and OS to detect various multi-threaded memory issues and provide additional features to inject concerns dynamically at run-time to extend it further according to the user&#x2019;s needs. We verify our tool with a wide variety of industry-standard benchmarks and compare its features with other similar tools.
first_indexed 2024-03-12T21:54:35Z
format Article
id doaj.art-dde6018dfba14534b231f616312413bd
institution Directory Open Access Journal
issn 2169-3536
language English
last_indexed 2024-03-12T21:54:35Z
publishDate 2023-01-01
publisher IEEE
record_format Article
series IEEE Access
spelling doaj.art-dde6018dfba14534b231f616312413bd2023-07-25T23:00:19ZengIEEEIEEE Access2169-35362023-01-0111735997361210.1109/ACCESS.2023.329352510177171ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic InstrumentationNachiketa Chatterjee0https://orcid.org/0000-0002-1109-5063Srijoni Majumdar1https://orcid.org/0000-0003-3935-4087Partha Pratim Das2https://orcid.org/0000-0003-1435-6051Amlan Chakrabarti3https://orcid.org/0000-0003-4380-3172A. K. Choudhury School of Information Technology, University of Calcutta, Kolkata, West Bengal, IndiaSchool of Computing, University of Leeds, Leeds, U.KDepartment of Computer Science, Ashoka University, Sonipat, Haryana, IndiaA. K. Choudhury School of Information Technology, University of Calcutta, Kolkata, West Bengal, IndiaSoftware developers often face challenges in terms of quality and productivity to match competitive costs. The software industry seeks options to minimize this cost during different phases of software development and maintenance with improved productivity. Software developers adopt different tools for different purposes, such as understanding program behavior, debugging memory issues, debugging concurrency issues, and testing. In this article we study different debugging tools mostly used for program design analysis, thread debugging, and resource management. Stand-alone tools do track static or dynamic control flow, thread activities, etc. But these do not specifically identify the thread work-breakdown-structure, global memory location management, thread-data interaction, etc. to allow good comprehension of the concurrency model of the program. Similarly for resource management, we observe that the <monospace>Valgrind</monospace> addresses a few required features but does not offer automatic garbage collection. Moreover, to address the outcomes of different tools, developers must compile and configure the application in different environments. This is very time-consuming, requires skills in different software paradigms, and is sometimes not supported by the tool itself. As a result, they cannot be used in an inter-operable manner to analyze by relating the different tool&#x2019;s outcomes. In this study, we conduct a detailed survey of the available tools and techniques and their limitations in identifying gaps. We address these gaps by implementing the tools for different phases of software development and maintenance. For example, a concurrency model detector based on thread behavior, resource debugger with features of automatic garbage collection, etc. can collectively inter-operate within our designed open-source tool framework Parallelc-Assist to address the common requests of the developers in one toolset. The tool is built upon open-source dynamic instrumentation tool PIN and supports a wide variety of IDEs and OS to detect various multi-threaded memory issues and provide additional features to inject concerns dynamically at run-time to extend it further according to the user&#x2019;s needs. We verify our tool with a wide variety of industry-standard benchmarks and compare its features with other similar tools.https://ieeexplore.ieee.org/document/10177171/Multi-threaded issuesmemory issuesdynamic instrumentation
spellingShingle Nachiketa Chatterjee
Srijoni Majumdar
Partha Pratim Das
Amlan Chakrabarti
ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation
IEEE Access
Multi-threaded issues
memory issues
dynamic instrumentation
title ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation
title_full ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation
title_fullStr ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation
title_full_unstemmed ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation
title_short ParallelC-Assist: Productivity Accelerator Suite Based on Dynamic Instrumentation
title_sort parallelc assist productivity accelerator suite based on dynamic instrumentation
topic Multi-threaded issues
memory issues
dynamic instrumentation
url https://ieeexplore.ieee.org/document/10177171/
work_keys_str_mv AT nachiketachatterjee parallelcassistproductivityacceleratorsuitebasedondynamicinstrumentation
AT srijonimajumdar parallelcassistproductivityacceleratorsuitebasedondynamicinstrumentation
AT parthapratimdas parallelcassistproductivityacceleratorsuitebasedondynamicinstrumentation
AT amlanchakrabarti parallelcassistproductivityacceleratorsuitebasedondynamicinstrumentation