Kori 4월 17일, 2022에 포스트됨 공유하기 4월 17일, 2022에 포스트됨 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 디버거는 여기에서 멈춘다. 따라서 이 오류는 그냥 무시하면 된다. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.