Перейти в начало страницы

Здравствуйте, гость ( Авторизация | Регистрация )

Gameru.net останавливает работу в связи с вторжением армии РФ в Украину. Следите за дальнейшими анонсами.
Support Gameru!
22 страниц V  « < 9 10 11 12 13 > »   
Ответить в данную темуНачать новую тему
> Курилка программистов, Флуд на около программерские темы
1001v
сообщение 19.01.2018, 22:37
Сообщение #201


Доктор Игровых Наук
*******************

Репутация:   1084  
Группа: Участник
Сообщений: 3950
Награды: 6
Регистрация: 24.08.2010




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(saas @ 19.01.2018, 22:32) *
RedPxthon, исправь лучше то, что комментарий перекрывает вторую секцию.

За этим надо к вендору обращаться, на этом мои полномочия все


--------------------

Перейти в начало страницы
 
ForserX
сообщение 28.01.2018, 01:41
Сообщение #202


Почти Игроман
*********

Репутация:   91  
Группа: Модератор
Сообщений: 516
Награды: 4
Регистрация: 19.07.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Есть идеи как получить валидный StackWalk64 с включенной оптимизацией? Ну или аналог старого blackbox?


--------------------

В армии по 01.07.2020.
Перейти в начало страницы
 
Tron
сообщение 28.01.2018, 02:05
Сообщение #203


Игровой Эксперт
***************

Репутация:   407  
Группа: Участник
Сообщений: 2394
Награды: 5
Регистрация: 19.01.2009




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(ForserX @ 28.01.2018, 01:41) *
Есть идеи как получить валидный StackWalk64 с включенной оптимизацией? Ну или аналог старого blackbox?

https://github.com/wc-duck/dbgtools/blob/ma...c/callstack.cpp
Перейти в начало страницы
 
autistic
сообщение 28.01.2018, 13:56
Сообщение #204


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(ForserX @ 28.01.2018, 03:41) *
Есть идеи как получить валидный StackWalk64 с включенной оптимизацией?

Никак. Оптимизатор может переместить, изменить или заинлайнить некоторые участки кода. В каком контексте задан вопрос? Если есть возможность, собирай без оптимизации, с ключом /Od.

Сообщение отредактировал Орхетектор - 28.01.2018, 15:22


--------------------
nop
Перейти в начало страницы
 
ForserX
сообщение 29.01.2018, 08:43
Сообщение #205


Почти Игроман
*********

Репутация:   91  
Группа: Модератор
Сообщений: 516
Награды: 4
Регистрация: 19.07.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Орхетектор @ 28.01.2018, 13:56) *
В каком контексте задан вопрос

Под х32 всё работает, в х64 отображается только первый вызов.


--------------------

В армии по 01.07.2020.
Перейти в начало страницы
 
autistic
сообщение 29.01.2018, 10:24
Сообщение #206


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(ForserX @ 29.01.2018, 10:43) *
Под х32 всё работает, в х64 отображается только первый вызов.

Понятно, что не отображается и даже понятно почему, непонятно для чего нужен стек вызовов с релизного билда?
В случае если есть какой-то трудновоспроизводимый баг который воспроизводится только на релизном билде и его необходимо локализовать, можно попробовать собрать билд с ключом Zo, затем снять дамп при воспроизведении и попытаться продебажить. Еще можно вручную залогировать участки кода, которые вызывают опасения, на предемет выполнится/не выполнится.
Во всех остальных случаях советую не сходить с ума и либо выключить оптимизацию, либо забить на раскрутку стека в логах.


--------------------
nop
Перейти в начало страницы
 
abramcumner
сообщение 29.01.2018, 12:42
Сообщение #207


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(ForserX @ 29.01.2018, 08:43) *
Под х32 всё работает, в х64 отображается только первый вызов.

А в релизе х64 создаются pdb?
Перейти в начало страницы
 
ForserX
сообщение 29.01.2018, 15:13
Сообщение #208


Почти Игроман
*********

Репутация:   91  
Группа: Модератор
Сообщений: 516
Награды: 4
Регистрация: 19.07.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


abramcumner, да.
Орхетектор, это для общего развития просто. У нас система дампов подключена для нормальной отладки у тестеров.


--------------------

В армии по 01.07.2020.
Перейти в начало страницы
 
NanoBot-AMK
сообщение 28.03.2018, 01:37
Сообщение #209


Почти Мастер
***********

Репутация:   75  
Группа: Участник
Сообщений: 1168
Награды: 4
Регистрация: 10.11.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Использую МАСМ. Но я считаю что он не полноценен. Там есть встроенные макрооператоры .if, .while, .until и другие.
Но мне этого мало, там нельзя использовать xmm регистры и не правильно работают макрофункции. В общем есть идея, разработать внешний транслятор операторов высокого уровня. Короче, что больше МАСМ на С/С++ больше был похож. Так же добавить выражения. Что то вроде такого.
Код
if(eax<10){
xmm0=xmm2*(float)eax/param
eax=xmm0/xmm9
}

Транслятор на выходе генерирует asm-код который нормально компилируется уже самим ml.exe. Вот как то так, можно конечно сделать и макросами(кое какой код есть существует(не мой)). Но в МАСМе есть некоторые ошибки которое это затрудняют, и которые никто не будет исправлять.

Сообщение отредактировал NanoBot-AMK - 28.03.2018, 01:43


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
autistic
сообщение 28.03.2018, 01:40
Сообщение #210


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(NanoBot-AMK @ 28.03.2018, 03:37) *
В общем есть идея, разработать внешний транслятор операторов высокого уровня. Короче, что больше МАСМ на С/С++ больше был похож.

А зачем? Почему бы просто на С/С++ не писать? Компилятор генерирует более оптимальный асм нежели человек, доказано неоднократно.


--------------------
nop
Перейти в начало страницы
 
NanoBot-AMK
сообщение 28.03.2018, 01:57
Сообщение #211


Почти Мастер
***********

Репутация:   75  
Группа: Участник
Сообщений: 1168
Награды: 4
Регистрация: 10.11.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Кто то сказал на С, что это такой «универсальный ассемблер». Но это не так. В ассемблере нет таких ограничений, как в С/С++ и др. и нет неявного кода, именно этот неявный код меня бесит. Вот я и пытаюсь идею МАСМ развить, добавили условные операторы .if, .while, .until хорошо, добавили макропроцессор хорошо. Но это всё работает не очень хорошо, много реальных багов, которые никто не собирается фиксить. Если получится, то получу язык уровня С-- Сфинкс, но одновременно проще, и более пригодный к тому же проекту XRayExtensions. Называется ассемблер высокого уровня. MASM++ *.asmpp

Сообщение отредактировал NanoBot-AMK - 28.03.2018, 01:59


--------------------
СТАЛКЕР только для ПК!
Перейти в начало страницы
 
Diesel
сообщение 05.04.2018, 04:37
Сообщение #212


Почти Мастер
***********

Репутация:   111  
Группа: Участник
Сообщений: 1158
Награды: 3
Регистрация: 07.08.2015




Вставить ник Цитировать выделенное в форуму быстрого ответа


Вопрос: На Виндовс 10 в визуалке 2013 для XP игру собрать - уже не актуально?
Я первый раз vs2013 использую. Напоролся на MFC.
Что говорят примерно по теме:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include\afxv_w32.h(40): fatal error C1189: #error: MFC does not support WINVER less than 0x0501. Please change the definition of WINVER in your project properties or precompiled header. Майкрософт больше не поддерживает Windows XP, поэтому, даже если ее можно указывать в качестве целевого объекта в Visual Studio 2013, ее поддержку нужно будет поэтапно сокращать в своих приложениях, а своим пользователям рекомендовать переходить на новые версии Windows.

Для устранения ошибки определите WINVER путем обновления свойств проекта — укажите здесь самую раннюю версию Windows, на которую вы хотите в настоящее время ориентироваться. Таблицу значений для различных версий Windows см. здесь.

Файл stdafx.h содержал некоторые из этих определений макросов.

#define WINVER 0x0500 // these defines are set so that we get the
#define _WIN32_WINNT 0x0500 // maximum set of message/flag definitions,
#define _WIN32_IE 0x0400 // from both winuser.h and commctrl.h.

Для WINVER мы установим Windows 7. Чтение кода в дальнейшем окажется проще, если использовать макрос для Windows 7 (_WIN32_WINNT_WIN7), а не само значение (0x0601).

#define WINVER _WINNT_WIN32_WIN7 // Minimum targeted Windows version is Windows 7


https://msdn.microsoft.com/library/windows/...p/aa383745.aspx

Под 2010. 2008 собирается проект SDK в студии 2013. А мне надо собрать либу и делку для тулкита под 2013 в студии 2013.
А что если либу и делку переименовать и заменить у них пути у основного проекта?
Чем отличается компиляция под 2013 от 2010 (2008)?

Грёбаный прогресс. Чем дальше, тем стремнее инструменты и движки. Там даже поиск в документах найти не могу. bad.gif

Сообщение отредактировал andreyholkin - 05.04.2018, 05:11
Перейти в начало страницы
 
Neo][
сообщение 05.04.2018, 06:52
Сообщение #213


The One
****************

Репутация:   744  
Группа: Участник
Сообщений: 2715
Награды: 5
Регистрация: 05.12.2005




Вставить ник Цитировать выделенное в форуму быстрого ответа


andreyholkin, а в чём вопрос то собственно? Как то размыто описано. Установи platform toolset соответствующий и определи правильно WINVER, т.е. не ниже 0x0501(о чём и сказано в сообщении об ошибке) и собирай.





Не помню правда, надо ли было в 2013 студии отдельной опцией доставлять соответствующий toolset

Сообщение отредактировал Neo][ - 05.04.2018, 07:00


--------------------
Перейти в начало страницы
 
autistic
сообщение 05.04.2018, 10:00
Сообщение #214


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(NanoBot-AMK @ 28.03.2018, 03:57) *
В ассемблере нет таких ограничений, как в С/С++ и др.

А что за ограничения?
Ассемблер накладывает достаточно ограничений, кстати, код не переносим на другие платформы и плохо читаем, иначе для чего тебе понадобилось затаскивать туда ифы с вайлами?
Каждый инструмент хорош в своей области применения, но так уж получилось, что возрастающая с каждым днем сложность разработки не оставила места для ассемблера, совсем.
Хотя знание ассемблера иногда пригождается, мне вот совсем недавно довелось устанавливать хуки на CreateFile / DeleteFile путем "объезда" кода настоящей и вызова кода нужной мне ф-ии.

Цитата(NanoBot-AMK @ 28.03.2018, 03:57) *
нет неявного кода, именно этот неявный код меня бесит.

Проблема неявного кода - это проблема разработчика, а не языка программирования. Чтобы неявного кода не было его достаточно не писать. Если в исходном коде все прозрачно и ты понимаешь что он делает, то тебя не должно колыхать то как компилятор соптимизирует его, это уже проблема разработчиков компиляторов.


--------------------
nop
Перейти в начало страницы
 
Cossack-HD
сообщение 05.04.2018, 17:54
Сообщение #215


TECHNOSLAV 80 уровня
**********************

Репутация:   379  
Группа: Участник
Сообщений: 5758
Награды: 6
Регистрация: 26.01.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


C# DataTable
Чё то не могу найти документацию о навигации по таблице. Я не собираюсь строить БД, просто хочу что-то более удобное, чем двумерный массив.
Буду на основе содержаний ячеек и названий столбцов строить JSON код.

Общая суть в псевдокоде
В ячейке "Page" есть данные? Ну тогда
generatedJSON.Append("
"ref": "@getCurrentCellContent()",
"title": "@getNextCellContent()"

")


Интересуют:
-Навигация по строкам - переходить от одной к другой, типа foreach (row in table) либо for (i=0; i<table.Rowcount, i++)
-Чтение данных из конкретных ячеек (я нахожусь в строке 3 и хочу прочитать из столбца с именем "Name", т.е. ячейка, которая соответствует [row == 3, column == "Name"]
-Получение имени столбца ячейки поблизости (я нахожусь в строке 3 и в столбце с именем "Name", мне нужно проверить наличие данных в следующем столбце и получить имя следующего столбца).

Мне кажется, проще будет сделать двумерный массив с заголовками в "первой строке", но для DataTable уже есть тулза для импорта EXCEL таблиц:
https://www.codeproject.com/Articles/11698/...rser-for-Flat-F

Сообщение отредактировал Cossack-HD - 05.04.2018, 18:04


--------------------
Ryzen 3700X
Arctic Freezer 33 eSports Duo
16GB DDR4 3600MHz
Strix GTX 1080 TI
Перейти в начало страницы
 
abramcumner
сообщение 05.04.2018, 18:19
Сообщение #216


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Cossack-HD @ 05.04.2018, 17:54) *
-Навигация по строкам - переходить от одной к другой, типа foreach (row in table) либо for (i=0; i<table.Rowcount, i++)
-Чтение данных из конкретных ячеек (я нахожусь в строке 3 и хочу прочитать из столбца с именем "Name", т.е. ячейка, которая соответствует [row == 3, column == "Name"]

Код
  foreach(DataRow row in table.Rows)
    Console.WriteLine(row["Name"]);

  for(int i = 0; i < table.Rows.Count; i++)
    Console.WriteLine(table.Rows[i]["Name"]);


Цитата
-Получение имени столбца ячейки поблизости (я нахожусь в строке 3 и в столбце с именем "Name", мне нужно проверить наличие данных в следующем столбце и получить имя следующего столбца).

Код
    Console.WriteLine(table.Columns[currentColumn.Ordinal + 1].Caption);
Перейти в начало страницы
 
Cossack-HD
сообщение 05.04.2018, 18:52
Сообщение #217


TECHNOSLAV 80 уровня
**********************

Репутация:   379  
Группа: Участник
Сообщений: 5758
Награды: 6
Регистрация: 26.01.2014




Вставить ник Цитировать выделенное в форуму быстрого ответа


abramcumner, щикарно!
Значит, DataTable это как 2D array, только вместо второго индекса можно юзать имя колонки. 10/10


--------------------
Ryzen 3700X
Arctic Freezer 33 eSports Duo
16GB DDR4 3600MHz
Strix GTX 1080 TI
Перейти в начало страницы
 
abramcumner
сообщение 05.04.2018, 18:57
Сообщение #218


Игровое Воплощение
*********************

Репутация:   394  
Группа: Участник
Сообщений: 4791
Награды: 4
Регистрация: 27.04.2011




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Cossack-HD @ 05.04.2018, 18:52) *
Значит, DataTable это как 2D array, только вместо второго индекса можно юзать имя колонки. 10/10

По документации так smile.gif Что не почитал? Ну и вместо имени индекс тоже можно.
Перейти в начало страницы
 
SkyLoader
сообщение 05.04.2018, 20:36
Сообщение #219


Почти Игроман
*********

Репутация:   153  
Группа: Участник
Сообщений: 614
Награды: 4
Регистрация: 03.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Цитата(Tron @ 28.01.2018, 02:05) *
Цитата(ForserX @ 28.01.2018, 01:41) *
Есть идеи как получить валидный StackWalk64 с включенной оптимизацией? Ну или аналог старого blackbox?

https://github.com/wc-duck/dbgtools/blob/ma...c/callstack.cpp

Что-то у меня после использования оного багтрэп перестал выводить стек в своё окно. Пока не углядел причины. Сама же штука работает, выводит почти всё, что надо.

Сообщение отредактировал SkyLoader - 05.04.2018, 20:36
Перейти в начало страницы
 
autistic
сообщение 05.04.2018, 22:43
Сообщение #220


Геймер
******

Репутация:   86  
Группа: Участник
Сообщений: 128
Награды: 4
Регистрация: 05.05.2012




Вставить ник Цитировать выделенное в форуму быстрого ответа


Кстати, для получения информации по стеку вызовов советую использовать CaptureStackBackTrace вместо StackWalk64.
Код
void Hook_PrintStack()
{
    unsigned int i;
    void* stack[100];
    unsigned short frames;
    SYMBOL_INFO* symbol;
    HANDLE process;

    LPCSTR searchPath = "C:\\Program Files\\Acronis\\BackupAndRecovery;C:\\Program Files\\Common Files\\Acronis\\BackupAndRecovery\\Common";
    process = GetCurrentProcess();
    SymInitialize(process, searchPath, TRUE);

    frames = CaptureStackBackTrace(0, 100, stack, NULL);
    symbol = (SYMBOL_INFO *)calloc(sizeof(SYMBOL_INFO) + 256 * sizeof(char), 1);
    symbol->MaxNameLen = 255;
    symbol->SizeOfStruct = sizeof(SYMBOL_INFO);

    printf("------------------------------ Stack trace ------------------------------\n");

    for (i = 0; i < frames; i++)
    {
        SymFromAddr(process, (DWORD64)(stack[i]), 0, symbol);
        printf("%i: %s - 0x%0llX\n", frames - i - 1, symbol->Name, symbol->Address);
    }

    printf("---------------------------------- End ----------------------------------\n");

    free(symbol);
}



--------------------
nop
Перейти в начало страницы
 

22 страниц V  « < 9 10 11 12 13 > » 
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 05.05.2024, 14:54