Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / c++ стеки потоков / 19 сообщений из 19, страница 1 из 1
22.04.2014, 00:41
    #38620969
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Добрые сутки!

Кто может подсказать, как, используя WinAPI получить адрес начала стека потока и его размер. Надо сделать дамп стека потока. Все процессы я перебрал и понаходил все их потоки. Теперь вот со стеком разбираюсь...

Заранее спасибо!
...
Рейтинг: 0 / 0
22.04.2014, 00:52
    #38620972
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
StackWalk64
...
Рейтинг: 0 / 0
22.04.2014, 01:01
    #38620975
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
супер! спасибо! буду копать по этому слову!
...
Рейтинг: 0 / 0
22.04.2014, 11:43
    #38621263
smald
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Galadriel7
Кто может подсказать, как, используя WinAPI получить адрес начала стека потока и его размер. Надо сделать дамп стека потока. Все процессы я перебрал и понаходил все их потоки. Теперь вот со стеком разбираюсь...


Зачё Вам WinApi? Шмаляйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include <stdio.h>

int main(int c , char** s){

 unsigned long addr;

 __asm__(

  "movq %%rbp, %0;" : "=r" (addr)
 );

printf("ADDR=0x%x\n", addr);
};
...
Рейтинг: 0 / 0
22.04.2014, 11:53
    #38621287
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
smaldЗачё Вам WinApi? Шмаляйте так:
а чужой поток?
...
Рейтинг: 0 / 0
22.04.2014, 12:37
    #38621373
smald
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Изопропила чужой поток?
Тут уже смотря как был создан. Если сисколом clone, то там стек сам ему создаёшь,
и передаёшь как параметр его адрес. То же, например, с boost::context.
Если с #pragma omp parallel, то тут и WinApi ничего знать не будет.
Уточните, про каким образом организованные потоки говорится.
...
Рейтинг: 0 / 0
22.04.2014, 12:50
    #38621406
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
smaldУточните, про каким образом организованные потоки говорится.
это не ко мне
...
Рейтинг: 0 / 0
23.04.2014, 09:09
    #38622469
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Спасибо за помощь в решении! Но все же - условие задачи - исключительно WinAPI. Передернуть все потоки у всех процессов и у каждого потока выциганить стек и сделать его дамп. Что-то такое нашел похожее, буду пробовать. Потом выложу решение, если оно рабочим окажется ...
...
Рейтинг: 0 / 0
23.04.2014, 09:45
    #38622510
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Была прикольная библиотечка на эту тему, итальянская по происхождению, бесплатная.
stacktrace кажется называлась.
...
Рейтинг: 0 / 0
23.04.2014, 11:23
    #38622653
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
MasterZivБыла прикольная библиотечка на эту тему, итальянская по происхождению, бесплатная.
stacktrace кажется называлась.


гы ! супер! щас попробую ее найти! спасибо!
...
Рейтинг: 0 / 0
23.04.2014, 11:28
    #38622665
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Galadriel75MasterZivБыла прикольная библиотечка на эту тему, итальянская по происхождению, бесплатная.
stacktrace кажется называлась.


гы ! супер! щас попробую ее найти! спасибо!

хотя с другой стороны... ... ... главное-то условие WinAPI ... и никак иначе....
...
Рейтинг: 0 / 0
23.04.2014, 15:11
    #38623178
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Galadriel75,

Она для WinAPI.
...
Рейтинг: 0 / 0
23.04.2014, 15:14
    #38623183
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
MasterZivGaladriel75,

Она для WinAPI.
я что-то такое нашел на сайте мелкомягких - наверно она - тока если ее итальянец соорудил, как она перетекла к мелкомягким?.. Вот линка туда
...
Рейтинг: 0 / 0
23.04.2014, 15:21
    #38623205
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Galadriel75,

Она к мелкомягким ни при как. Это сторонняя библиотека с открытым кодом, написанная в каком-то итальянском университете (на сколько я понял). Автор -- итальянец. Она достаточно старая, времён WinNT, но это правда ничего не меняет.

Я её тоже так сходу не нашёл, зато нашёл кучу экзамплов на codeproject
...
Рейтинг: 0 / 0
26.04.2014, 17:49
    #38626624
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Фрагмент исходника:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
while ( 				
				  StackWalk64( MachineType,
				                    process_handle,
				                    thread_handle,
				                    &sf,
				                    &cur_thread_context,
				                    NULL,
				                    SymFunctionTableAccess64,
				                    SymGetModuleBase64,
				                    NULL ) 
			)
			{






            } // while



ну вот все же кое что нарисовал...
это вложенная фича в цикле перебора всех процессов с потоками
допустим, имеется хэндл данного потока данного процесса.
Как в этой ситуации получить дамп стека, вывести его в консоль или еще куда...?
Заранее спасибо!
...
Рейтинг: 0 / 0
26.04.2014, 18:27
    #38626643
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
скорее всего примерно догадываюь: зная адрес фрейма, можно из него дергать байты и тупо их выводит в Hex формате.... как-то так
...
Рейтинг: 0 / 0
26.04.2014, 19:05
    #38626663
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Galadriel75скорее всего примерно догадываюь: зная адрес фрейма, можно из него дергать байты и тупо их выводит в Hex формате.... как-то так

фрейм - структура.......
...
Рейтинг: 0 / 0
27.04.2014, 11:33
    #38626930
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
Galadriel75Фрагмент исходника:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
while ( 				
				  StackWalk64( MachineType,
				                    process_handle,
				                    thread_handle,
				                    &sf,
				                    &cur_thread_context,
				                    NULL,
				                    SymFunctionTableAccess64,
				                    SymGetModuleBase64,
				                    NULL ) 
			)
			{






            } // while



ну вот все же кое что нарисовал...
это вложенная фича в цикле перебора всех процессов с потоками
допустим, имеется хэндл данного потока данного процесса.
Как в этой ситуации получить дамп стека, вывести его в консоль или еще куда...?
Заранее спасибо!

На кой тебе стэки других процессов?
...
Рейтинг: 0 / 0
28.05.2014, 11:43
    #38654268
Galadriel75
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c++ стеки потоков
MasterZiv, та не мне это надо, это я халтурку делал... Это студентам такое сейчас задают...
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / c++ стеки потоков / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]