Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

[DocWiki 번역] 디버깅 및 환경 리포트 질문과 답변 (FireDAC)


Recommended Posts

Docwiki에 있는 "Debugging and Reporting Environment Questions (FireDAC)"을 번역한 글: 번역일: 2022년 4월 18일)

위로 가기: [DocWiki 번역] FAQ (FireDAC)

디버깅 및 환경 리포트와 관련된 질문과 답변을 정리한 목록이다.

 

Q: 나도 FDExplorer가 클라이언트(Client)/세션(Session) 정보를 가 가져오는 것과 비슷하게 기능을 구현하고 싶다. 어떻게 하면 되나?

A: "DBMS 환경 리포트 (FireDAC)"을 참고

Q: 추적 기록(trace)/모니터링(monitor) 산출물을 생성하려면 어떻게 하면 되나?

A: "추적 기록과 모니터링 (FireDAC)"을 참고

Q: 추적 기록(trace)/모니터링(monitor) 산출물을 생성을 일시적으로 켜거나(enable)/끄려면(disable) 어떻게 하면 되나?

A: TFDMoniXxxxClientLink.Tracing을 사용하라. 특정 추적 유형(tracer kind)에 대해서 추적 결과물 생성 기능 켜기(enable)/끄기(disable)를 할 수 있다. 특정 연결에 대해서 추적 결과물 생성 기능 켜기(enable)/끄기(disable)를 하려면 FDConnection.ConnectionIntf.Tracing을 사용하라.

Q: 이벤트유형(EventKind)은 무엇을 의미하나?

A: 아래 목록 참고:

  • LiveCycle: 오브젝트 생성(creation)/파괴(destruction). 예를 들면, IFDPhysConnection 이 생성된다.
  • Error: DBMS 에러.
  • ConnConnect: 연결(connection) 열기(open)/닫기(close).
  • ConnTransact: 시작(Start)/커밋(Commit)/롤백(Rollback).
  • ConnService: 특별한 이벤트 몇가지.
  • CmdPrepare: IFDPhysCommand.Prepare 호출.
  • CmdExecute: IFDPhysCommand.Execute 또는 Open 호출.
  • CmdDataIn: 명령 파라미터 (Command parameter) 값.
  • CmdDataOut: 결과 세트 (Result set) 행.
  • AdaptUpdat: 업데이트 전송(posting updates) 관련 모든 것.
  • Vendor: 로우-레벨 DBMS API 호출.
  • Component: 하이-레벨 이벤트 몇가지.

Q: 디버깅이 필요해서 SQL 구문을 보고 싶은데 어느 유닛의 어느 부분에서 볼 수 있나?

A: 다음 중 한가지 방법을 사용:

  • MonitorBy 연결 파라미터(connection parameter) 사용.
  • FireDAC.Phys.pas를 열고, TFDPhysCommand.Prepare 메소드를 찾아 보면 그 안에서 InternalPrepare 메소드를 호출하고 있을 것이다. 여기에 중단점(breakpoint)을 놓고 FDbCommandText 필드의 값을 확인하라. 이 SQL 구문 그대로 DBMS로 전달된다.

Q: 파라미터와 매크로 치환이 모두 반영된 최종 SQL 구문을 어떻게 볼 수 있나?

A: TFDQuery.Text를 보라. FireDAC은 최종 SQL 구문 안에 파라미터 값을 넣지 않는다는 점을 유의하라.

Q: 추적 결과물 생성 기능 켜기(enable)를 했더니 Access Violation이 계속 발생한다. 무엇이 잘못되었나? 버그인가?

A: FireDAC에서는 ODBC 기반의 드라이버인 경우 마이크로소프트의 ODBC 드라이버 관리자 추적 기능을 사용한다. 이 관리자 기능은 추적 결과물을 생성하기 위해 내부적으로 C RTL 함수인 IsBadReadPtr/IsBadWritePtr를 사용하는데, 이것은 제어되는 AV를 내부에서 생성한다. 이 예외(exception)는 해당 관리자 밖으로 전파되지 않지만, IDE 디버거는 여기에서 멈춘다. 따라서 이 오류는 그냥 무시하면 된다.

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.