Вопросы и ответы по программированию.

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#286 Сообщение 13.10.2012, 20:30

чтобы быстрее найти функцию, из-за которой приложение работает не так как я хочу)
спасибо.
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#287 Сообщение 15.10.2012, 03:14

сейчас выяснил, что valgrind не работает под windows(а гонять исходники с виртуалки на ось и обратно западло), а профайлеры(CodeAnalyst, Very Sleepy) предназначены для статистики - делают немного не то..(видимо я не точно сформулировал).

Нужна программа, выводящая стек вызовов исследуемого приложения вместе со значениями фактических параметров(при условии наличия исходников естессно).
^умеет ли это callgrind?
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#288 Сообщение 15.10.2012, 03:37

nikit-xxx
Поищи плагины под это дело для IDA Pro.

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#289 Сообщение 15.10.2012, 18:39

это плохо, но на запросы вроде "ida pro function actual parameters plugin" находится всё что угодно, кроме того, что мне нужно..

очередное уточнение

Есть ли вообще такая программа, выводящая вызовы функций(которые написаны в исходниках) исследуемого приложения(C/C++) вместе со значениями фактических параметров(при условии наличия исходников естественно).
Например:
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f(int a) { cout << "Hi, user!\n" << a; }
int i;
};

int main()
{
cl::f(222);
return 0;
}
[/syntax]

вот собственно чего я хочу:

Код: Выделить всё

entering in main(int argc=1, char** argv[0]="myprog.exe");
 entering in cl::f(int a=222);
 exiting from cl::f();
exiting from main() with 0;
в принципе для частного случая это вроде не сложно, можно самому написать прогу, генерирующую и добавляющую printf()
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#290 Сообщение 15.10.2012, 18:46

nikit-xxx
Если и есть, то, очевидно, она должна просить на вход исходники вместе с бинарником, или, возможно, даже компилировать особым образом. Если не получилось с IDA Pro, то лучше всего искать во всяких IDE. В студии такого не было случайно? И,кстати, вывод нужен в понятном для человека виде, или в пригодном для автоматизации чего-то?

Кажется в Visual Studio было что-то такое из коробки...

Аватара пользователя
nikit-xxx
Лейтенант
Лейтенант
Сообщения: 208
Зарегистрирован: 28.11.2007
Благодарил (а): 44 раза
Поблагодарили: 5 раз

#291 Сообщение 15.10.2012, 18:48

вывод нужен в понятном для человека виде, или в пригодном для автоматизации чего-то?
для человека
ок, будем искать в студии
Откуда иксы в моём нике
Изображение
Изображение
скачать С. Прата. Язык программирования C++. Лекции и упражнения. 5-е изд (*Выровнена нумерация страниц, *Содержание)
Краткая инструкция по созданию пиратки-распака CS/HL
Изображение
Использование тэга подсветки синтаксиса
[syntax lang="cpp" lines="n"]
#include <iostream>
using namespace std;

struct cl{
static void f() { cout << "Hi, user!\n"; }
int i;
};

int main()
{
cl::f();
//cl::i = 1;
return 0;
}
[/syntax]

Аватара пользователя
Monk
VIP
VIP
Сообщения: 4713
Зарегистрирован: 21.11.2009
Благодарил (а): 418 раз
Поблагодарили: 1053 раза
Контактная информация:

#292 Сообщение 18.10.2012, 00:37

Скрытый текст

Код: Выделить всё

        public byte[] GetFile(string url)
        {
            Byte[] result = null;
            try
            {
                WebClient webClient = new WebClient();
                result = webClient.DownloadData(url);
            }
            catch (Exception ex)
            {
                File.AppendAllText(@".\error.txt", DateTime.Now + " Ошибка функции GetFile = " + ex.Message + Environment.NewLine, Encoding.UTF8);
                return null;
            }
            finally { }
            return result;
        }//качать файл и гнать в байт
Чувствую есть косяки, но основной вопрос в следующем:
Что нужно сделать, чтобы оно проверяло верно ли получена инфа? Получал пару раз недокачанные файлы.


UPD: благодаря MOZGIII получил такую картину:
Скрытый текст

Код: Выделить всё

        public byte[] GetFile(string url)
        {
            Byte[] result = null;
            WebResponse resp = null;
            WebRequest wr = WebRequest.Create(url);
            try
            {
                WebClient webClient = new WebClient();
                result = webClient.DownloadData(url);
                resp = wr.GetResponse();
            }
            catch (Exception ex)
            {
                File.AppendAllText(@".\error.txt", DateTime.Now + " Ошибка функции GetFile = " + ex.Message + Environment.NewLine, Encoding.UTF8);
                return null;
            }
            finally { }
            if (resp.ContentLength != result.LongLength) { File.AppendAllText(@".\error.txt", DateTime.Now + " Ошибка функции GetFile = Файл скачан не полностью." + Environment.NewLine, Encoding.UTF8); return null; };
            return result;
        }//качать файл и гнать в байт
Вроде проверка теперь есть, ошибка появляется редко, посмотрим.
Последний раз редактировалось Monk 18.10.2012, 01:33, всего редактировалось 1 раз.
«По ночам компьютеры собираются вместе и смеются над людьми, если те делают работу, которую могли бы делать компьютеры» (с) habrahabr
 
[hide_num=64]Изображение
Изображение

Не стоит становиться на одно колено ради девушки, которая ради тебя не готова встать на два. (С)
640K ought to be enough for anybody (с) BG[/hide_num]

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#293 Сообщение 18.10.2012, 00:48

Monk
Хороший способ - проверять размер файла (или инфы), ещё лучше сверять хеш-суммы. Возможно дело в веб-сервере и он не до конца отправляет файл. Если WebClient не кидает эксепшен, а файл не докачан - то это либо веб-сервер, либо это кривота .netа.
Тут важно понять что происходит, для этого советую воспользоваться Wireshark-ом + дебаггером.

Аватара пользователя
nameless noob
Полковник
Полковник
Сообщения: 1682
Зарегистрирован: 01.09.2010
Откуда: Россия
Благодарил (а): 21 раз
Поблагодарили: 56 раз
Контактная информация:

#294 Сообщение 25.10.2012, 20:08

посоны, почему у меня не работает read в с++,

Код: Выделить всё

F:\project\yatata\main.cpp||In function 'int main()':|
F:\project\yatata\main.cpp|19|error: 'read' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|
хотя istream я подключил
Изображение

Аватара пользователя
$t@t!c_V()1D
Разработчик
Разработчик
Сообщения: 2639
Зарегистрирован: 06.12.2007
Благодарил (а): 10 раз
Поблагодарили: 29 раз

#295 Сообщение 25.10.2012, 20:46

nameless noob
Полный исходник извольте. Возможно упущен std:: или какой-нибудь ещё namespace вначале - экстрасенс из меня никакой.

Аватара пользователя
nameless noob
Полковник
Полковник
Сообщения: 1682
Зарегистрирован: 01.09.2010
Откуда: Россия
Благодарил (а): 21 раз
Поблагодарили: 56 раз
Контактная информация:

#296 Сообщение 26.10.2012, 16:23

не знаю, почему я решил написать именно это, от балды взято

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <istream>


using namespace std;

long x;
char c, v;

int main()
{

    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);

    //while(not EOF)
    //{
        read(x);
        printf("%ld",x);
        if (x & 1) ++v;
        else ++c;
        printf("%ld",x);
        if (c >= v) printf("YES"); else printf("NO");

    }
Добавлено спустя 39 секунд:
а еще не работает while(not EOF), не знаю, почему, может я что-то не то делаю, потому закомментил
Изображение

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#297 Сообщение 26.10.2012, 16:31

nameless noob
Не бери от балды, читай книжки и компилируй примеры из них. В книжках хотя бы объясняют каждую строку кода. А прежде чем кодить, нужно понимать.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
nameless noob
Полковник
Полковник
Сообщения: 1682
Зарегистрирован: 01.09.2010
Откуда: Россия
Благодарил (а): 21 раз
Поблагодарили: 56 раз
Контактная информация:

#298 Сообщение 26.10.2012, 16:42

NiGHt-LEshiY
спасибо отец, а то как будто я не читал
Изображение

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#299 Сообщение 26.10.2012, 16:50

nameless noob
freopen в С++ коде? while(!EOF)? read(x)? printf в С++ коде?
Что же ты читал такое?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
nameless noob
Полковник
Полковник
Сообщения: 1682
Зарегистрирован: 01.09.2010
Откуда: Россия
Благодарил (а): 21 раз
Поблагодарили: 56 раз
Контактная информация:

#300 Сообщение 26.10.2012, 16:59

NiGHt-LEshiY
почему же это у меня все работает, кроме read? тем более, в с++ это все есть, вот сайт даже http://www.cplusplus.com/reference/iost ... ream/read/ - это про read, там дальше еще много чего есть
раз такой умный, дай мне свой скайп в личку

Добавлено спустя 2 минуты 9 секунд:
к тому же если scanf использовать, все норм*, но там считывается не как надо, а все числа сразу, а надо считывать только те, между которыми есть "/" или пробел
*все норм кроме while (not EOF)
Изображение

Ответить Вложения 1