2010-08-20 1 views
1

실행 파일에서 호출 될 때마다 func로 이어지는 호출 스택을 얻으려고합니다. 속도가 느려지는 경우 걱정하지 않습니다. (func은 수천 번 히트를 치기 때문에) 자동화되어있는 한 비효율적이거나 비효율적입니다. 나는 DBX에 액세스 할 수있는, 그래서 내가 이런 걸 할 수 있다고 생각 :dbx에서 'where'의 출력 방향 재 지정

 (dbx) { when in func { where -q; }; } | awk '{ print }' > out.txt

을하지만 (내가 기능이 박히는 것을 확인 한 통화가 콘솔이나 파일에 출력 스택이 표시되지 않습니다). dbx의 설명서에는 '리디렉션 할 수없는 명령'이라는 메시지가 있지만 사용자가이 작업을 수행하는 데 사용 된 해결 방법이 있는지 궁금합니다.

답변

1

일부 dbx 명령은 쉘 메타 문자가있는 인수를 허용해야합니다. 예를 들어 : 인쇄 (A < 34)

같은 명령에 대한

, 명령 전에 재 넣을 수 있습니다 : (DBX를)>/tmp를/t 인쇄 (A < 34)

"도움 리디렉션 "dbx 명령 행에서이를 설명합니다.

예제에서 'where'명령은 함수 이름을 인수로 받아들입니다. (C++에서는) < 및> 문자를 사용할 수 있습니다. 그래서 그것은이 특별한 범주에 속합니다.

불행히도 명령 전에 파이프 작업을 사용할 방법이 없습니다. 원하는 것을 얻으려면 임시 파일과 관련된 다른 체계를 사용해야합니다. 위에서 언급 한 도움말 항목에는 예제가 있습니다.