[erlang-questions] Debugging apps with dependencies

Tim Watson <>
Tue May 1 10:42:47 CEST 2012


You might also want to look at github.com/hyperthunk/appstart which is intended for development environment not as alternative to releases.



On 1 May 2012, at 00:11, Garret Smith <> wrote:

> Declaring the dependencies in your .app.src file is the most idiomatic way I've seen, and they get started for you by the boot script so you don't have to worry about coding that yourself.  See the 'applications' list for the list of applications that should be started before yours.
> 
> {{modules}} is a rebar macro that will be replaced with the module names from your project.
> You have to fill in the 'registered' list yourself.
> 
> example app.src:
> {application, myapp,
>  [{description, "My Erlang App"},
>   {vsn, "1.0.0"},
>   {modules, [{{modules}}]},
>   {registered, [registered_process_names]},
>   {applications, [kernel, stdlib, sasl, mnesia, yaws]},
>   {mod, {app_callback_module, []}}
>  ]
> }.
> 
> For the appmon problem, 1st I recommend using 'observer' instead.  I just started using it with R15B01 and... wow.  The tracing support is phenomenal.  Go Erlang devs!
> 
> To get observer included in your release, add it to your reltool.config like so:
> 
> {app, observer, [{incl_cond, include}]},
> 
> -Garret Smith
> 
> On Mon, Apr 30, 2012 at 12:00 PM, Josh Black <> wrote:
> Excellent!  Thanks Tristan and Bob for the suggestions.  I'll try them out.  Is either one considered more idiomatic?
> On Monday, April 30, 2012 at 11:48 AM, Tristan Sloughter wrote:
> 
>> Correct about why you can't find appmon, but there is an easy way around this. Start the release yourself, you probably have to add your libs to ERL_LIBS first depending how how you have things setup. So like:
>> 
>> $ export ERL_LIBS=$ERL_LIBS:<path to dir with your compiled apps>
>> $ erl -boot <path to boot file>
>> 
>> This will have your release running in your main erts env, not one created specifically for your release.
>> 
>> Someone else can probably give better instructions based on where rebar places the libs and .boot file, I don't know those.
>> 
>> Tristan
>> 
>> On Mon, Apr 30, 2012 at 1:05 PM, Josh Black <> wrote:
>>> Hi, erlang beginner here.
>>> 
>>> I have a question about the best way to debug apps which include dependencies.
>>> 
>>> I'm working on an app, and so far, I've been testing it by using rebar to generate a release, then starting a console for the release and going from there.  The problem comes when I want to use something like dbg or appmon to debug errors or inspect the state of my app.  When I try to do, e.g. appmon:start() from the console for my release, it tells me "undefined function appmon:start/0".  I'm guessing this is because I didn't explicitly specify appmon in my release configuration?
>>> 
>>> Alternatively, I created a start.sh shell script with contents like this:
>>> 
>>> erl -pa apps/*/ebin -pa deps/*/ebin -eval 'application:start(dependency1), application:start(dependency2), application:start(myapp).'
>>> 
>>> This lets me start appmon and whatever else I want when I run into errors, but feels pretty messy and wrong.
>>> 
>>> I feel like I'm missing something really obvious here.  What's the correct way to do this?
>>> 
>>> _______________________________________________
>>> erlang-questions mailing list
>>> 
>>> http://erlang.org/mailman/listinfo/erlang-questions
>>> 
>> 
> 
> 
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
> 
> 
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20120501/b460a9b8/attachment.html>


More information about the erlang-questions mailing list