Debugging

Techniques and best practices for debugging plugins and handling errors in your language module development process.

Debugging C# plugins in mixed mode allows you to debug both managed (.NET) and unmanaged (native) code simultaneously. This is particularly useful when working with Plugify's C# Language Module, as it involves interactions between managed and native components. This guide provides an overview of mixed-mode debugging and directs you to external resources for detailed instructions.

Prerequisites

Before debugging your C# plugins in mixed mode, ensure you have the following:

  • Visual Studio (2022 or later) with the .NET desktop development workload installed.
  • Plugify Core Library (built and available).
  • C# Language Module (`plugify-module-dotnet`) installed and configured.
  • A compiled C# plugin to debug.

Debugging C# Plugins in Mixed Mode

Mixed-mode debugging enables you to debug both the managed C# code and the native Plugify core simultaneously. Below are the general steps to debug C# plugins in mixed mode:

Set Up Your Development Environment

  • Ensure your C# plugin project is configured for debugging (e.g., built in Debug mode).
  • Open your plugin project in Visual Studio.

Enable Mixed-Mode Debugging

  1. Right-click your C# plugin project in the Solution Explorer and select Properties.
  2. Go to the Debug tab.
  3. Under Debuggers, check the Enable native code debugging option.

Attach the Debugger to Plugify

  1. Launch Plugify with your C# plugin loaded.
  2. In Visual Studio, go to Debug > Attach to Process.
  3. Find the Plugify process in the list and click Attach.

Set Breakpoints

  • Open the source files for your C# plugin in Visual Studio.
  • Set breakpoints in your code by clicking in the left margin next to the line numbers.

Debug Your Plugin

  • Trigger the functionality in your plugin that you want to debug.
  • The debugger will pause execution at your breakpoints, allowing you to inspect variables, step through code, and analyze the call stack.

Detailed Debugging Guide

For a comprehensive step-by-step guide on mixed-mode debugging, refer to Microsoft's official documentation:

Common Debugging Scenarios

1. Plugin Crashes

  • Check the Plugify logs for error messages.
  • Use the debugger to identify the exact line of code causing the crash.
  • Inspect variables and memory to diagnose the issue.

2. Plugin Not Loading

  • Verify that the plugin is compiled correctly and placed in the correct directory.
  • Check for missing dependencies or incompatible versions.
  • Use the debugger to step through the plugin initialization code.

3. Unexpected Behavior

  • Set breakpoints in the relevant functions to trace the flow of execution.
  • Inspect variable values to identify discrepancies.
  • Use conditional breakpoints to debug specific scenarios.

Advanced Debugging Tips

1. Use Logging

  • Add logging statements to your plugin code to track execution flow and variable values.
  • Use Plugify's built-in logging system to output messages to the console or log files.

2. Debugging Native Code

  • Use the Disassembly Window in Visual Studio to inspect native code.
  • Set breakpoints in native code to debug interactions between managed and unmanaged components.

3. Debugging Multithreaded Code

  • Use the Threads Window in Visual Studio to monitor and debug multiple threads.
  • Be cautious of race conditions and deadlocks.

Troubleshooting

1. Debugger Not Attaching

  • Ensure Plugify is running and the plugin is loaded.
  • Verify that the plugin is built in Debug mode.

2. Breakpoints Not Hit

  • Ensure the plugin code matches the compiled binary.
  • Rebuild the plugin and restart Plugify.

3. Debugger Crashes

  • Update Visual Studio to the latest version.
  • Ensure all dependencies are compatible with your development environment.

For more advanced debugging techniques and tools, refer to the Visual Studio Debugger Documentation.