2017-09-21 4 views
2

Ich benutze Erlang 20 mit Elixir 1.5.0, und ich habe versucht, break! URI.decode_query/2 in iex. Dann habe ich folgenden Fehler erhalten:Wie kann Elixir richtig eingerichtet werden, um die neuen IEx-Breakpoints mit Elixir 1.5 zu verwenden?

** (RuntimeError) could not set breakpoint, module URI was not compiled with debug_info (iex) lib/iex.ex:647: IEx.break!/4 

Mit welcher Option kompiliere ich Erlang und wie mache ich das? Wenn es hilft, habe ich kerl verwendet, um meine Erlang-Installationen zu erstellen und zu verwalten.

+0

Wie haben Sie Elixir installieren? – Dogbert

+0

Ich benutzte Kiex https://github.com/taylor/kiex – Nona

+1

Meine Vermutung ist Kiex verwendet vorkompilierte Versionen von Elixier, auf diese Weise iex kann nicht den Haltepunkt setzen. Sie müssen wahrscheinlich Elixier selbst kompilieren, damit es funktioniert ... –

Antwort

1

Die meisten Versionsverwalter, einschließlich kerl, installieren die vorkompilierten Versionen von Elixir, die nicht die erforderlichen Debug-Informationen enthalten.

Wenn jedoch die Quelle herunterzuladen, es über make und den Betrieb der iex binär in /bin/ sich kompilieren, können Sie erfolgreich Satz Stützpunkte auf diesen Modulen:

~/elixir_install/elixir-1.5.1/bin » ./iex 
Erlang/OTP 20 [RELEASE CANDIDATE 2] [erts-9.0] [source] [64-bit] [smp:8:8 [ds:8:8:10] [async-threads:10] [hipe] [kernel-poll:false] 

Interactive Elixir (1.5.1) - press Ctrl+C to exit (type h() ENTER for help) 
iex(1)> break! URI.decode_query/2 
1 
iex(2)> URI.decode_query("percent=10", %{"starting" => "map"}) 
Break reached: URI.decode_query/2 (/home/johnny/elixir_install/elixir-1.5.1/lib/elixir/lib/uri.ex:136) 

    134: end 
    135: 
    136: def decode_query(query, map) when is_binary(query) and is_map(map) do 
    137:  decode_query_into_map(query, map) 
    138: end 

pry(1)> 
+0

FWIW Ich habe Elixir über Homebrew mit einem Homebrew "Bottle" (kompilierte Binärdateien) installiert und bin in der Lage, einen Breakpoint auf diese Funktion zu setzen. Vielleicht gibt Kiex beim Erstellen von Elixir andere Flaggen als das, was Homebrew macht, um ihre "Flaschen" zu erstellen. – Dogbert

+0

Interessant, ich habe mir nur die Quelle von Kiex angeschaut, und sie ruft tatsächlich 'make compile' auf, wie ich es mit der Quelle getan habe. –