GithubHelp home page GithubHelp logo

asdbg's Introduction

asdbg

A remote debugger for AngelScript. Currently in very early stages of development.

Implementation

To implement the debugger into the host application, include asdbg.h. Also, in 1 .cpp file, include it while ASDBG_IMPL is defined.

#define ASDBG_IMPL
#include "asdbg.h"

Then, before the first execution of a script context, initialize the debugger:

asIScriptContext* ctx = engine->CreateContext();
dbg::Initialize(ctx);

Next, define any encoders you may need for variable inspection. An encoder takes a pointer and returns a string representation. Optionally, a decoder takes a pointer and a string representation, and you have to decode the string representation into the pointer. For example, a std::string encoder (for the default ScriptString addon) looks like this:

dbg::Encoder(engine->GetTypeIdByDecl("string"), [](void* ptr) {
  return *(std::string*)ptr;
}, [](void* ptr, const char* set) {
  *(std::string*)ptr = set;
});

When your program is shutting down, call dbg::Release() before the context is released.

dbg::Release();
ctx->Release();
engine->Release();

Goals

  • Single-header implementation in host application
  • Stepping through code with a visual code view
    • Step into
    • Step over
    • Step out
  • Breakpoints
  • View local variables
    • Built-in types
    • Custom types
    • Arrays
    • Dictionaries
  • View stack trace
  • Inspect each frame individually

License

MIT license:

Copyright (c) github.com/codecat 2017 - 2018

asdbg's People

Contributors

codecat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asdbg's Issues

Possible improvements

Some ideas for improvements to the library and debugger gui:

  • focus / flash app when breakpoint is hit
  • add Visual Studio style keyboard shortcuts to basic flow commands (Resume F5, Step Over F10, etc.).
  • clicking on items in Call Stack should jump to this file/position if possible
  • view global variables
  • make the pane with the scripts treeview resizable 9or slightly larger)
  • Add “Save” option to the script editor, to actually modify the scripts. This could send a message to the host app, so that it could actually reload and rebuild the scripts via a callback.
  • Allow working with multiple AS contexts

Crash or hang on exit and locking breakpoints

I managed to implement asdbg in our game in a very short time. Everything seems to work fine, except I've run into two issues:

  • at host app exit everything hangs on dbg::Release() (it hangs on _networkThread.join(); if not connected with the debugger gui, and on clientThread.join() otherwise).
  • at some point when working with the debugger, the breakpoint filename paths change from relative to absolute and can no longer be removed (clicking the same lines just adds another breakpoint with a relative path). It already happened a few times, but I can't pinpoint the repro.

Any help with those issues would be welcome :) Anyway, big thanks for sharing the code for the debugger and hoping you will keep working on it. I will post some ideas about possible improvements in a separate issue.

Hope create wiki

Hello.

I can't complete the build

Can you provide wiki teaching in the form of fool? Is it convenient for our beginners to get a trial as soon as possible?

and hope Want to provide a release exe file

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.