Visual Studio는 StackOverflowException에서 첫 번째 스택 프레임을 잃습니다.

c# html-agility-pack stackframe stack-overflow visual-studio

문제

웹 크롤러를 실행하고 HtmlAgilityPack을 사용하여 페이지 컨텐트를 파싱하고 C # 라이브러리에서 무작위로 StackOverflowException을 얻습니다. 그러나 호출 스택 목록을 코드에 표시하려고하면 다음과 같은 결과가 발생합니다.

"Visual Studio에서 지원하는 스택 프레임의 최대 수를 초과했습니다."

사이드 노트 : 나는 이미 sjdirect의 HAP 픽스를 사용하고있다.

여기에 스냅 샷이 있습니다 (이 모든 방법으로 반복됩니다).

적어도 스택이 채우기 전에 할당 할 수있는만큼 Visual Studio에서 추적 할 수있는 스택 프레임 수를 늘릴 수 있습니까? 아니면 반대로 디버깅 된 응용 프로그램의 스택 크기를 줄일 수 있습니까?

수락 된 답변

StackOverflowExceptions의 문제점은 스택이 효과적으로 파괴된다는 것입니다. 이 페이지 에는이 조건이 스택에서 80,000 레벨로 끝나는 재귀 적 예제가 있습니다.

마지막으로 읽은 VS가 디버깅을 위해 64 비트를 에뮬레이트하는 32 비트 앱인 것을 고려하면 VS의 사용 가능한 메모리를 지나치게 많이 사용하여 스택 수준을 관리 할 수 ​​있습니다.


인기 답변

CLR 응용 프로그램의 스택 크기를 제한하거나 Visual Studio의 추적 스택 프레임 수를 늘리는 것과 같은 명백한 기능은 없습니다.

솔루션으로 난 그냥 (같은 것들 텍스트를 추출 할 수 HtmlAgilityPack 포기 것 정말 솔루션 없음) 및 쓰기 자신 구식 HTML을 텍스트 파서하거나 매우 유사한 다른 유사한 질문에 유래에 게시 된 답변 중 하나를 (시도 매트 크라우치 (Matt Crouch)의 질문 에 대한 답변은 없지만 수천 페이지의 렌더링 가능한 텍스트를 추출하는 데 적합한 답변은 없습니다.)

편집 : 비록 정규식 일반적으로 권장되지 않습니다,이 실제로 내 문제를 해결할 (StackOverflowException 처리 할 필요없이) : HTML을 일반 텍스트로 변환

노력해 주셔서 감사 드리며 다른 사람들에게 도움이되기를 바랍니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow