xshyne88

xshyne88

I will eventually add a more specific and concrete example but first wanted some general help or advice on stacktraces.

I am currently working on an Elixir Phoenix Absinthe application that is currently in the beginning stages of production, however while in development I actually had a fair amount of trouble with stacktraces being cut off. Absinthe a lot of time seems to hog the entirety of the stack trace and its difficult for me to track where in my code the bug currently started. I’ve messed around with using rescue, debugger.start(), but these things seem less useful when I’m not exactly sure where in my code the problem arose.
I have a lot of work being done before data gets pushed back to the resolver and alot of times the resolver stack is the only thing I see when things go wirey.
I set my Phoenix config logger level to infinity and still no good. I feel like outside of explicitly rescuing or knowing right where the problem is (which is the source of my problem) I don’t know how to print a full full stack trace.

TLDR
Is there something I can do to better pinpoint where in my code something is going wrong when extenal libraries tend to take up a huge part of the stack before it gets truncated.

Showing Posts 1 to 5

NobbZ

NobbZ

Hello @xshyne88!

Could you please elaborate what parts of the call stack are missing?

If it is about calls in the mid of the chain, this is totally as expected, as the BEAM does havey tailcall optimisation and some calls simply do not produce a new stackframe but overwrite the old.

def foo(), do: bar()

def bar(), do: :bar

In such a scenario foo/0 would never appear in a call stack.

axelson

axelson

Scenic Core Team

@xshyne88 Have you configured the erlang :backtrace_depth? I believe the default is rather small (although if you use Phoenix they bump it to 20 by default).

What does this print out for you? (it returns the previous :backtrace_depth)

:erlang.system_flag(:backtrace_depth, 20)

docs: erlang — OTP 29.0.2 (erts 17.0.2)

Also welcome to the forum! :wave:

xshyne88

xshyne88 OP

Perfect, thank you! I didn’t know this… I’ll elaborate when I run across another real example, I’ll post it here, did not hit one yesterday.

xshyne88

xshyne88 OP

Hi Axelson!
No I didn’t try it, or at least I don’t remember trying it. I’ll check it out. In my Iex shell it was 20. thanks for the reference I’ll post here again in a bit.

xshyne88

xshyne88 OP

Also thank you for answering my generic non specific question so quickly ! :P, I’m very happy to be here on Elixir Forum its been an incredible resource for me as I’ve been using Elixir at my work for about 6 months now and have progressed very quickly due to this forum and my head developer mentoring me. I’d love to answer questions and give back too.

— All posts loaded —

Where Next? Top

Trending in Questions Top

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
roeland
Kia ora, We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
jaybe78
Hello, I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter). The diffic...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews