Visual Studio 2010의 디버거가 최근에 잘못된 라인 및/또는 건너 뛰는 라인을 가리키고 있는데, 왜 그런지 모르겠습니다. 이것은 CUDA 프로젝트이며 CUDA 파일에서만 발생합니다. 나는 다음을 주목했다 :Visual Studio 2010 디버거가 잘못된 라인을 가리키고 있습니다.
- 그것은 항상 프로그램의 같은 부분에서 발생한다.
- 그것이 가리키는 라인은 항상 동일합니다. 즉 임의가 아닙니다.
- 을 뒤에 놓으면 범칙금은 그것이 가리키는 줄을 변경합니다.
.cu
- 파일에서만 발생합니다. 코드를.cpp
- 파일로 이동해도 문제가 다시 발생하지 않습니다.- 청소 및 솔루션을 재건 :
은 내가 시도 무엇.
- 수동으로 솔루션 폴더에서 다시 후 생성 된 모든 파일을 삭제하고
- 모두
C/C++
및CUDA C/C++
- 에 대한 디버그 모드에서 하지 사용 최적화에 컴파일러 설정 MSVC10에 대한 SP1을 설치하고 윈도우 업데이트를 통해 가능한 모든 업데이트를 할 .
- 폴더 삭제
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
- 원본 파일 만 사용하여 솔루션 다시 만들기.
- 내 광고 확장을 사용하지 않도록 설정.
다음 코드를 줄이면 문제가 재현 될 수 있습니다. 이 코드는 .cu 파일 내부에 있어야하며 C/C++ 용 cuda 컴파일러로 컴파일해야 할 필요가있을 것입니다. 부스트를 포함하는 것은 꼭 필요한 것은 아니지만,이 예에서는 어떤 문제가 있는지 보여줍니다. 더 짧은 예가 뒤에 있습니다.
#include <boost/numeric/ublas/matrix.hpp>
using boost::numeric::ublas::matrix;
struct foo {
foo() : mat(NULL) {}
matrix<float>* mat;
};
bool func(foo *data) {
bool status; // <- skipped line
status = false;
if (status) {
std::cout << "test\n";
return (status); // <- error reported here
}
int size = data->mat->size1(); // instead of here
return status;
}
int main(int args, char* argv[]) {
func(NULL); // force error by passing NULL pointer
return 0;
}
아무에게도이를 해결하는 방법이나 어떻게 이런 일이 일어날 수 있습니까? 이런 식으로 디버깅하는 것은 매우 짜증나는 일입니다.
더 짧은 예는 건너 뛴 줄만 보여줍니다. 외부 라이브러리가 필요하지 않습니다. 프로그램은 CPU의 지침과 지시 사항을 포함하지 않는 어떤 구조가없는 유형의 변수 선언을 포함하기 때문에
bool func() {
bool status; // <- skipped line
status = false;
return status;
}
int main(int args, char* argv[]) {
func();
return 0;
}
관련 질문 : http://stackoverflow.com/questions/3144880/visual-studio-2010-debugger-skipping, http://stackoverflow.com/questions/4934073/visual-studio-2010-debugger-jumps- around, http://stackoverflow.com/questions/1505823/visual-studio-2008-crazy-debugger-skipping, http://stackoverflow.com/questions/8917717/visual-studio-is-skipping-to-every- other-line-while-debugging – Didii