2012-10-01 4 views
0

좋아, 나는이 기능이 존재하는지 잘 모르겠으므로 여기서 사지 않을 것이다. 내가 아는 것은 다음과 같습니다.값이 깨졌을 때 깨기

코드의 어느 부분에서 데이터 덩어리가 읽혀집니다. 코드의 해당 부분을 찾으려고합니다. (그리고 우리는 여기서 거대한 코드 기반을 말하고 있습니다 - 거의 300 개의 프로젝트에서 수만 개의 파일이 있습니다. 코드 라인에서 추측하기조차 할 수 없었습니다 - 파일 당 2000-3000은 드문 일이 아니므로 이것은 바늘/haystack 영역).이 데이터에는 식별 가능한 특정 문자열이 들어 있습니다. 메모리 덩어리가 해당 문자열로 설정된 경우 중단 점을 설정할 수 있기를 바랍니다. 내가 모르는 무엇

는 :

나는 또는이 캐릭터 라인이 어디 저장되는 경우에도, 그래서 메모리 주소 또는 변수에 중단 점을 설정할 수 없습니다 아무 생각이 없습니다. 내가 알고있는 것은 적어도 짧은 시간 동안 (아마도 하나의 함수의 범위 또는 for 루프의 한 번의 반복 만)이 값은 어딘가에입니다. 문자열 자체가 코드에 의해 무시되고 수반되는 데이터 만 저장 될 수도 있지만 문자열은 어느 시점에서 메모리에 존재해야합니다.

분명히 일반적인 중단 점을 설정할 수 없습니다. 중단 점을 어디에 둘 것인지 알고 있다면 이미 필요한 부분을 가지고있을 것이고 그러한 조치를 할 필요가 없기 때문입니다. 필자는이 코드가 어떤 프로젝트에서 발생하는지 알지 못합니다. 파일 내에서 또는 그 파일 내에서 어떤 기능을 제공하는지는 알지 못합니다.

이것은 단지 희망적인 생각입니까? 아니면 이런 종류의 일을하는 쉬운 방법이 있습니까?

+1

이 기능은 존재하지 않으며 실현 가능성도 낮습니다. 디버거에 얼마나 많은 스트레스가 가해 졌는지 생각하십시오. 특정 값에 대해 항상 모든 메모리를 검사합니다. –

+0

항상 모든 메모리를 검사 할 필요는 없습니다. 메모리가 실제로 변경된 경우에만 변경된 메모리 만 검사해야합니다. 예, 성능이 저하 될 수 있지만 디버그 모드 여야합니다. 그리고이 과정은 모든 종류의 최적화로 가속화 될 수 있습니다. 저는'X' 길이의 문자열을 찾고 있습니다. 그러나이 명령은'XY' 바이트 만 변경 했으므로 모니터링 할 필요가 없습니다. 등 생각하지 않습니다. 그런 도구를 만드는 것은 불가능할 것이고, 그것은 매우 유용 할 것입니다 ... –

+0

만약 제가 정말로 * 그 일을 할 수 있다면, Microsoft의 "우회로"를 사용하여 ReadFileEx를 연결할 것이라고 생각합니다. 결코 그것을 사용하지 마십시오. 심판을 위해, 그것은 단지 그 구로 작용했다. –

답변

1

Microsoft의 프로세스 모니터 (SysInternals)를 사용하여 파일 I/O를 모니터링하십시오. 기호가 올바르게 구성되어 있으면 (자신과 Microsoft의) 프로세스 모니터는 각 파일 I/O 작업과 관련된 스택 추적을 표시합니다.

+0

나는 이런 일을 느끼고 있습니다. 까다로운 부분은 컴퓨터에서 Windows 파일 시스템을 다루는 것이 아니라 dev-kit의 XBox 파일 시스템을 다루는 것이므로 로컬에서 실행되지 않기 때문에 실제로 네트워크 트래픽을 모니터링해야합니다. 이 모든 정보를 필터링하는 방법을 알아 내려면 잠시 시간이 걸릴 수 있으므로 당분간이 정보를 받아 들일 것입니다. –

+0

Windows OS가 XBox와의 네트워크 입출력을 수행합니까? –

+0

예. 그것은 심지어 VS 디버거에 연결되어 있으므로 어떻게 든 서로 이야기해야합니다. 데이터는 아마 XBox 어딘가에 있지만 쉽게 접근 할 수있는 형태로 존재하지는 않습니다. 이제 문제는 Process Monitor를 합리적인 수준으로 필터링하는 것입니다. 이것이 다른 건초 더미의 다른 바늘이 될 수도 있습니다. 주어진 문자열에 대해이 입력을 검색하는 방법을 아직 모르거나 심지어 문자열이 여기에 표시되는 경우에도 - 아직 인식 할 수있는 것을 찾지 못했습니다. –