Elixir의 디버깅 및 디버깅 도구?
저는 Elixir를 막 사용하기 시작했고 Phoenix 프로젝트를 시작했습니다. 이제 Rails에 대한 배경 지식을 가지고 있기 때문에 "debugger", "byebug"등과 같은 디버깅 도구를 사용하는 데 익숙해졌습니다. Elixir에 유사한 도구가 있는지 궁금합니다. Elixir 애플리케이션을 어떻게 디버깅하고 있습니까?
Rubys와 동등한 것조차도 raise my_object.inspect놀라운 일을 할 것입니다!
감사합니다
당신이 사용할 수있는 IEx
require IEx
value = {:some, :erlang, :value}
IEx.pry
예를 들어 iex -s program.exs(또는 iex -S mix프로젝트의 경우) 이 프로그램을 시작하면 이 코드에 도달했을 때이 코드를 들여다 볼 수 있는지 여부를 묻는 메시지가 표시되고 value검사를 위해 사용할 수 있습니다.
IO.inspect기본적으로 모든 erlang 데이터 구조를 출력 할 수 있도록 하여 인쇄 디버깅을 수행 할 수도 있습니다 .
카우보이 앱 및 Phoenix 앱 디버깅.
나는 Elixir rader http://www.jessetrimble.net/iex-pry-elixir 에서이 게시물을 보았고 매우 편리하기 때문에 여기에 요약 할 것이라고 생각했습니다. :-).
Rails 애플리케이션 (및 기타)에서 컨트롤러의 디버거 태그를 간단히 삽입 할 수 있으며 경로가 트리거되면 디버거 태그에서 중단됩니다.
Phoenix에서 pry를 사용할 때 위의 결과는
Cannot pry #PID<0.259.0> at web/controllers/posts_controller.ex:8. Is an IEx shell running?
Phoenix 프로세스는 IEx 세션 내에서 실행되어야한다는 것이 밝혀졌습니다.
iex -S mix phoenix.server
이제 대신 당신은 볼 것입니다
Request to pry #PID<0.266.0> at web/controllers/posts_controller.ex:9. Allow? [Yn]
https://github.com/qhool/quaffQuaff.Debug 에서 모듈을 사용할 수 있습니다.
Debug 모듈은 erlang 그래픽 디버거에서 Elixir 코드를 실행하기위한 간단한 도우미 인터페이스를 제공합니다.
오늘 Elixir 1.0.4로 테스트했는데 작동합니다.
Erlang 디버거를 사용하십시오. Phoenix 1.3 및 Elixir 1.5.1의 예, 소스 파일 : ./lib/todo/api/api.ex 및 모듈 이름 : Todo.API
~/elixir/todo_app/ iex -S mix phx.server
Erlang/OTP 20 [erts-9.0] [source] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]
[info] Running TodoWeb.Endpoint with Cowboy using http://0.0.0.0:4000
Interactive Elixir (1.5.1) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> :debugger.start()
{:ok, #PID<0.373.0>}
iex(2)> :int.ni(Todo.API)
{:module, Todo.API}
Erlang 디버거에서 :
- 모니터 창의 왼쪽 패널에는로드 된 모듈이 표시됩니다.
- 모듈 메뉴, 하단 항목은 '보기'및 '삭제'하위 메뉴와 함께로드 된 모듈을 보여줍니다. 보기 메뉴를 사용하여 행 번호가있는 소스를보십시오.
- 중단 점을 배치하려면 중단 메뉴, 줄 바꿈 ...을 사용하십시오.
- 프로그램이 지정된 줄에서 멈출 때까지 실행하십시오. 모니터 창에는 상태가 '중단'인 프로세스가 표시됩니다. 디버거에서 연결된 프로세스를 열려면이 줄을 두 번 클릭합니다. 여기서 스텝, 스텝 오버 (다음), 계속, 올라 가기, 값 검사 등을 할 수 있습니다. 다른 모듈로 들어가려면 위와 같이로드해야합니다.
- 올바르게 배치되지 않으면 중단 점이 무시됩니다. 여러 줄 파이프 라인이있는 경우 마지막 줄에 중단 점을 배치합니다.
Elixir 1.5 및 OTP 20에는 Exception.blame/3특정 예외에 디버그 정보를 추가 할 수 있는 새로운 기능 이 있습니다. 지금은 지원할 FunctionClauseErrors뿐이며 비용이 많이 드는 작업이므로 개발시에만 사용해야합니다. 함수는 바이트 코드에서 사용 가능한 절을 검색하고 주어진 인수에 대해 평가합니다. 릴리스보기
byebug와 유사한 테스트를 디버그하는 방법이 있습니다. 명령을 사용하면 iex -S mix test테스트가 실행되고 IEx.pry가 발견되면 여기서 "중지"하고 컨텍스트를 분석할지 묻는 메시지가 표시됩니다.
코드 예 :
defmodule AppTest do
def hello do
test_variable = "john doe"
require IEx; IEx.pry
:world
end
end
defmodule AppTestTest do
use ExUnit.Case
doctest AppTest
test "greets the world" do
assert AppTest.hello() == :world
end
end
iex -S mix test그것을 실행 하면 require IEx; IEx.pry.
Source: https://elixirforum.com/t/how-to-debug-exunit-tests-with-debugger/14170/4
참고URL : https://stackoverflow.com/questions/28724372/debugging-and-debugging-tools-in-elixir
'IT TIP' 카테고리의 다른 글
| Gson 및 배열이있는 객체 배열 역 직렬화 (0) | 2020.11.21 |
|---|---|
| jquery-div가 높이 또는 CSS 속성을 변경하는지 확인하는 방법은 무엇입니까? (0) | 2020.11.21 |
| Swagger UI의 파일 문제에서 읽을 수 없음 (0) | 2020.11.20 |
| pip 캐시 폴더는 어디에 있습니까? (0) | 2020.11.20 |
| Python의 클래스 팩토리 (0) | 2020.11.20 |