nietaki

nietaki

Rexbug - Elixir wrapper for :redbug tracing debugger

Rexbug is the Elixir wrapper for the :redbug Erlang tracing debugger. Redbug has been around forever and it has some nice features (it is production safe, simple and pretty powerful), but it was a bit of a pain to use from Elixir. I set off to fix that with Rexbug and yesterday I released 1.0.0 with all the features I had originally planned :tada::tada::tada:

Let me know if you have any questions :slight_smile:

Most Liked

nietaki

nietaki

Rexbug 2.0.0-rc1 is out!

Notable changes:

  • Update to redbug 2.0
  • Support for matching on structs
  • Add Rexbug.dtop/1
  • Improve guard functions support
  • Improve matching on lists
  • Reach 96% test coverage
  • Fix print_re option handling
  • Remove mix_test_watch and make from formal package dependencies
  • Add the scripts/release.sh tool

I’ll dogfood the rc-1 for a couple of weeks and release it as v2.0.0. All help testing the release candidate appreciated!

nietaki

nietaki

Hey, I’m back to being involved in Elixir after a couple of years of doing other things in another project and I’m happy to see rexbug is still getting plenty of downloads despite just yearly bugfix releases.

I would like it if rexbug remained a relevant and convenient tool in the future, so I’d like to focus on building a 2.0 release and commit some time to maintenance afterwards.

Which is why I’d like to ask you guys for some thoughts on on rexbug, its utility and where you see it going in the future. I know there have been so projects to expand its functionality, such as rexerbug and replbug and there’s good arguments for introducing their functionality to rexbug as such.

Here’s where my head is at right now:

Critical stuff for 2.0 release:

  • migrate to redbug 2.x
  • make sure rexbug compiles with compilation or credo warnings on Elixir/Erlang latest
    • (still target the widest reasonable range of Elixir/Erlang versions)
  • add the capability for matching on map fields

Long term 2.x wishlist

  • The ability to pass captured functions instead of magic strings for easier use in the shell (inspired by rexerbug and dbg.
  • the ability to save the tracing results to a repl variable, like in replbug
  • ability to run tracing on the whole cluster
  • some form of pretty printing for the trace results

Of course the items from the second list differ in the amount of work required to make them work and how well specified the functionality is - will need some prioritization.

CTA: Please let us know how you use rexbug and what aspects of it would provide the most value! I have been out of the loop for a while and feedback from real users would be very valuable :slight_smile:

also: my apologies to people who opened issues/PRs on the project in the last couple of years and didn’t get much of a response - hopefully I can do better from now on and we can work on the project together :slight_smile:

nietaki

nietaki

Update:

The work on rexbug v2 is going well. Here’s the changes so far:

  • improved CI, moved to GitHub Actions
  • updated redbug dependency to 2.x, seems to be working great
  • added support for matching on structs
  • added support for matching on list heads ([h | _t], [h1, h2 | _t])
  • added support for redbug 2 functionalities
  • increased the test coverage back to 95%+
  • No compilation or credo warnings

I’m hoping to release the 2.0.0-rc1 version on hex within a week’s time. If anyone wants to help with testing it to make sure 2.0.0 can be released safely, I’d really appreciate it. Tagging @binarytemple - he’s the most involved power-user of Rexbug I know :smiley:

I’d like to start working on 2.1 immediately after releasing 2.0. I’m thinking the main feature for that would be the ability pass functions to the tracing (via captured functions or macros, I still need to see the which approach would work best), instead of magic strings. I think it would be a big win for the usability of the tool - we’ll be able to use iex shell completion instead of manually making sure everything is spelled right.

When that comes I hope to solicit some feedback for the proposed API to make sure it’s useful to you guys.

As always - feedback very much welcome.

binarytemple

binarytemple

More than happy to help out, great library! Sorry I haven’t been more of an active contributor.

Where Next?

Popular in Libraries Top

Crowdhailer
Raxx is an alternative to Plug and is inspired by projects such as Rack(Ruby) and Ring(Clojure). 1.0-rc.1 is now available. To use it re...
New
deadtrickster
I’ve just released stable versions of my Prometheus Elixir libs: Elixir client [docs]; Ecto collector [docs]; Plugs instrumenter/Export...
New
OvermindDL1
Been making an MLElixir thing (not released yet…) for fun in spare time in the past day. I’m just trying to see how much I can get an ML...
132 13487 106
New
josevalim
EDIT: since Ecto 3.0 final version is out, this post was amended to use the final versions in the instructions below. Hi everyone, We a...
New
woutdp
Hi! I wanted to introduce my latest project LiveSvelte. It allows you to render Svelte inside LiveView with end-to-end reactivity. It’s ...
New
achempion
Hi, I would like to tell about my initiative to further maintain and develop Waffle project which is the fork of Arc library. The progre...
New
michalmuskala
Hello everybody. I have just released Jason - a new JSON library. You might be wondering, why do we need a new library? The primary foc...
New
asiniy
Hey there! I wrote a download elixir package which does exactly what its name about - an easy way to download files. I saw solutions ...
New
benlime
I created a new library GitHub - benvp/ex_cva: Class Variance Authority for Elixir which aims to make it very easy to define different va...
New
Qqwy
Solution is a library to help you with working with ok/error-tuples in case and with-expressions by exposing special matching macros, as ...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3268 119930 1237
New
chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30048 115
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod -- where is this set? Thanks.
New
lk-geimfari
What is most correct way to open, read and parse JSON file with poison? For example if we have example.json file in root of some projec...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New

Sub Categories:

We're in Beta

About us Mission Statement