Designing a source-level debugger for cognitive agent programs

Research output: Contribution to journalArticleScientificpeer-review

5 Citations (Scopus)
34 Downloads (Pure)


When an agent program exhibits unexpected behaviour, a developer needs to locate the fault by debugging the agent’s source code. The process of fault localisation requires an understanding of how code relates to the observed agent behaviour. The main aim of this paper is to design a source-level debugger that supports single-step execution of a cognitive agent program. Cognitive agents execute a decision cycle in which they process events and derive a choice of action from their beliefs and goals. Current state-of-the-art debuggers for agent programs provide insight in how agent behaviour originates from this cycle but less so in how it relates to the program code. As relating source code to generated behaviour is an important part of the debugging task, arguably, a developer also needs to be able to suspend an agent program on code locations. We propose a design approach for single-step execution of agent programs that supports both code-based as well as cycle-based suspension of an agent program. This approach results in a concrete stepping diagram ready for implementation and is illustrated by a diagram for both the Goal and Jason agent programming languages, and a corresponding full implementation of a source-level debugger for Goal in the Eclipse development environment. The evaluation that was performed based on this implementation shows that agent programmers prefer a source-level debugger over a purely cycle-based debugger.
Original languageEnglish
Pages (from-to)941-970
Number of pages30
JournalAutonomous Agents and Multi-Agent Systems
Issue number5
Publication statusPublished - 2017


  • Debugging
  • Cognitive agent
  • Agent program
  • Source-level
  • Decision cycle
  • Cognitive state


Dive into the research topics of 'Designing a source-level debugger for cognitive agent programs'. Together they form a unique fingerprint.

Cite this