Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
#1

Отладка - C++

20.03.2013, 05:22. Просмотров 560. Ответов 6
Метки нет (Все метки)

Доброго времени суток!

Написал программку в которой специально допустил ошибку.

C++
1
2
3
4
5
6
int main()
{
    char * buf = nullptr;
    *buf = 10;
    return 0;
}
При падении моей программы, VS 2012 в Debug режиме указывает на строку в дебрях файла winapisupp.c, а не на 4 строку моего кода. Подскажите пожалуйста, почему так происходит и каким образом мне заставить VS 2012 указывать на точное место падения.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2013, 05:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отладка (C++):

Отладка - C++
Всем доброго времени суток! Я новичок на этот форуме, да и вообще в программировании. Я начал заниматься написанием плагинов на С++...

Отладка :) - C++
Доброго времени суток. Подскажите пожалуйста! Делаю отладку в Visual Studio. Хочу чтобы выполнилось условие if. Какое сочетание клавиш...

Отладка - C++
Помогите отладить программу - не могу понять, почему завершается работа. Вот код: #include <iostream> #include <windows.h> ...

Отладка - C++
Вопрос такой, можно ли в visual studio сделать остановку ( только с помощью отладчика ), на определённом шаге цикла, то есть while на 100...

Отладка - C++
РЕбят, подскажите как сделать чтоб выводило только 4 знака после запятой у X и Y. Заранее спасибо#include<math.h> #include<stdio.h> ...

Отладка - C++
Нужно добавлять элемент в массив array (вводится с клавиатуры), если его не существует. Функция Add: void Set::add() { int a;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ITDeveloper
85 / 85 / 5
Регистрация: 14.01.2011
Сообщений: 263
20.03.2013, 07:15 #2
выложите весь листинг программы
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
20.03.2013, 15:03  [ТС] #3
Это и есть весь листинг программы. Необходимо что бы VS адекватно показывала строку в коде, на которой упала программа.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
20.03.2013, 16:38 #4
Ты производишь запись по неопределенному адресу, программа в результате может упасть где угодно, а вовсе не на той строчке, на которой ты ожидаешь.
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
20.03.2013, 18:48  [ТС] #5
Почему по неопределенному? Адрес определенный и равен 0x00000000.
В VS2008 при падении моей программы указывает на 4 строку. А VS2012 нет.
Вот и хотел бы узнать, как заставить VS2012 показывать точное место падения.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
20.03.2013, 19:00 #6
Нигде не задокументировано, что nullptr гарантированно указывает на 0.
Все это зависит исключительно от отладчика, наверняка между 2008 и 2012 большие изменения в нем.
Winterad
3 / 3 / 0
Регистрация: 15.12.2012
Сообщений: 14
20.03.2013, 19:18  [ТС] #7
В моем случае значение указателя точно равно нулю.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
int main()
{
00A31370  push        ebp  
00A31371  mov         ebp,esp  
00A31373  sub         esp,0CCh  
00A31379  push        ebx  
00A3137A  push        esi  
00A3137B  push        edi  
00A3137C  lea         edi,[ebp-0CCh]  
00A31382  mov         ecx,33h  
00A31387  mov         eax,0CCCCCCCCh  
00A3138C  rep stos    dword ptr es:[edi]  
    char * buf = nullptr;
00A3138E  mov         dword ptr [buf],0  
 
    *buf = 10;
00A31395  mov         eax,dword ptr [buf]  
00A31398  mov         byte ptr [eax],0Ah  
 
    return 0;
00A3139B  xor         eax,eax  
}
00A3139D  pop         edi  
00A3139E  pop         esi  
00A3139F  pop         ebx  
00A313A0  mov         esp,ebp  
00A313A2  pop         ebp  
00A313A3  ret
И при попытке записи по нулевому адресу VS2012 отладчик должен показать именно на 4 строку исходника. Так как это делает VS2008. Так что попрошу людей с VS2012 попробовать у себя отладить мой код программы и ответить в теме.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.03.2013, 19:18
Привет! Вот еще темы с ответами:

Пошаговая отладка - C++
Скажите, как в Visual Studio 2010, настроить пошаговую отладку так, чтоб например при функции new не открывались файлы, где new...

Отладка программы на С++ - C++
Нужно отладить программу, при компиляции выдает: ----- Построение начато: проект: WR01, Конфигурация: Debug Win32 ------ 1> ...

Отладка программы - C++
Отлаживал циклы, не получается отладить код этой программы, пишет: Сам код: #include "stdafx.h" #include...

Отладка программы - C++
Есть небольшие проблемы с отладкой программы. Компилятор молчит #include <stdio.h> #include <stdlib.h> #include <math.h> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.03.2013, 19:18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru