Today’s Erlang Thursday continues to take a look at the c
module with c:m/1.
c:m/1
takes an atom of a module name, and returns information about the module. It prints out information about the compliation date, time, and options; the object (BEAM) file that it was loaded from, and a list of functions exported by the module.
We’ll start with taking a look at the string
module in Erlang.
c:m(string). % Module string compiled: Date: November 28 2014, Time: 06.47 % Compiler options: [{outdir,"/private/tmp/erlang-pY1Kv2/otp-OTP-17.3.4/lib/stdlib/src/../ebin"}, % {i,"/private/tmp/erlang-pY1Kv2/otp-OTP-17.3.4/lib/stdlib/src/../include"}, % {i,"/private/tmp/erlang-pY1Kv2/otp-OTP-17.3.4/lib/stdlib/src/../../kernel/include"}, % warnings_as_errors,debug_info] % Object file: /usr/local/Cellar/erlang/17.3.4/lib/erlang/lib/stdlib-2.2/ebin/string.beam % Exports: % centre/2 rstr/2 % centre/3 span/2 % chars/3 str/2 % chars/2 strip/1 % chr/2 strip/2 % concat/2 strip/3 % copies/2 sub_string/2 % cspan/2 sub_string/3 % equal/2 sub_word/2 % join/2 sub_word/3 % left/2 substr/2 % left/3 substr/3 % len/1 to_float/1 % module_info/0 to_integer/1 % module_info/1 to_lower/1 % rchr/2 to_upper/1 % right/2 tokens/2 % right/3 words/1 % words/2 % ok
We can see that this was compiled on my machine on November 28th of 2014, and had the warnings_as_errors
and debug_info
turned on, as well as the location of the beam file, and all of the different functions the string
module exports.
Next, we will look at a module compiled from inside the shell.
c(fizzbuzz). % {ok,fizzbuzz} c:m(fizzbuzz). % Module fizzbuzz compiled: Date: August 5 2015, Time: 22.14 % Compiler options: [] % Object file: /Users/proctor/tmp/fizzbuzz.beam % Exports: % fizzbuzz/1 % module_info/0 % module_info/1 % ok
c:m(fizzbuzz)
shows that it was compiled, and was loaded from my tmp
directory, and exports fizzbuzz/1
along with the two versions of module_info
that every module exports.
Again, this is one of those functions that you might not use everyday, but when it comes to debugging and inspecting your Erlang application becomes a very useful function to know about.
–Proctor