С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
1

Релиз консольной программы с SNMP запросами - найти ошибку в коде

25.07.2014, 15:49. Показов 1624. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем!

Я написал программку, которая опрашивает некоторые устройства используя запросы по протоколу SNMP. Программа отлично работает при Start without debugging, но её релизная версия спотыкается в самом начале, а именно при первом запросе. Прошу тыкнуть, где я мог что-то сделать неправильно?

Релизную версию получаю запуском Build->Batch build->...

Код программы:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <string>
#include <iostream>
#include <thread>
#include <Windows.h>
 
#include <iomanip>
 
#include <Mgmtapi.h>
#include <Snmp.h>
#include <SDKDDKVer.h>
#include <stdio.h>
#include <tchar.h>
#include <sstream>
#include <fstream>
#include <Winbase.h>
 
#pragma comment(lib, "Snmpapi.lib")
#pragma comment(lib, "Mgmtapi.lib")
 
using namespace std;
 
int main()
{
 
    cout << "Hello Owrld!" << "\n";
    
    LPSTR OID = ".1.3.6.1.2.1.1.1.0";
 
    SNMPAPI bx=0;
    SnmpVarBind OIDvarbind={0};
    SnmpMgrStrToOid (OID, &OIDvarbind.name);
    OIDvarbind.value.asnType = ASN_NULL;    
    cout << OIDvarbind.value.asnType << "\n";
    SnmpVarBindList OIDvarbindlist={0};
    OIDvarbindlist.len=1;
    OIDvarbindlist.list = (SnmpVarBind *) SnmpUtilMemAlloc (OIDvarbindlist.len*sizeof(SnmpVarBind));
    OIDvarbindlist.list=&OIDvarbind;
    
    int IPArraySize=5;
    LPSTR *IPArray=new LPSTR [IPArraySize];
    for (int i=0;i<IPArraySize;i++)
    {
        IPArray[i]="";
    }
    IPArray[0]="X.X.X.Y";
    IPArray[1]="X.X.X.Z";
 
 
    LPSNMP_MGR_SESSION *SNMPSessionArr = new LPSNMP_MGR_SESSION[IPArraySize];
    for(int i=0;i<IPArraySize;i++)
    {
        cout << "i is: " << i << " --> " << "IP is: " << IPArray[i] << "\n";
        
        SNMPSessionArr[i]=SnmpMgrOpen(IPArray[i], "private", 500, 0);
 
        AsnInteger errStatus = SNMP_ERRORSTATUS_NOERROR;
        AsnInteger errIndex = 0;
 
        cout << "i is: " << i << " --> " << "Gonna send request!" << "\n";
 
        bx=SnmpMgrRequest (SNMPSessionArr[i], SNMP_PDU_GET, &OIDvarbindlist, &errStatus, &errIndex);
 
        cout << "i is: " << i << " --> " << "Request sent!" << "\n";
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2014, 15:49
Ответы с готовыми решениями:

Найти ошибку в коде программы
Сегодня начал изучать систему ввода-вывода в C# и тестируя методы столкнулся с небольшой...

Найти ошибку в коде программы
Народ, посмотрите пожалуйста на код, оператор break не прекращает перебор вариантов case и выводит...

Найти ошибку в коде программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Зацикливание программы, найти ошибку в коде
#define EE 1E-80 #define MAX_ROOTS 15 typedef struct { Complex root; int nor; // number...

7
1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
27.07.2014, 11:26  [ТС] 2
up!

Парни, должно быть что-то простейшее же, типа залинковать что-то?
0
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
27.07.2014, 15:21 3
ioscat, хотите ответа - давайте подробные и осмысленные
описания ошибок. "Спотыкается" - это непонятно что.
0
1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
28.07.2014, 06:42  [ТС] 4
ну, гм, прерывается и всё. "Программа завершена" - это сообщение высвечивается при запуске ЕХЕ из папки Release. Как получить дополнительную информацию?
0
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
28.07.2014, 08:58 5
Цитата Сообщение от ioscat Посмотреть сообщение
Как получить дополнительную информацию?
Для начала сделать нормальную обработку ошибок.
Ну например, в коде есть вызов SnmpMgrOpen, но не проверяется, что
он возвращает. А ведь функция может возвращать NULL, и тогда код
ошибки можно прочесть из GetLastError. Ну и т.д.
Так Вы будете хотя бы знать, в каком месте ошибка. Ну а дальше уже
можно будет разбираться почему.
0
1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
28.07.2014, 09:35  [ТС] 6
При отладке выдаёт:
Unhandled exception at 0x7762E753 (ntdll.dll) in StrcutTry.exe: 0xC0000374: Куча была повреждена (parameters: 0x77664270).
в строке
bx=SnmpMgrRequest (SNMPSessionArr[i], SNMP_PDU_GET, &OIDvarbindlist, &errStatus, &errIndex);
Как можно получить значения ошибки из функции, если само выполнение этой функции приводит к выводу программы из строя?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.07.2014, 10:35 7
SnmpMgrOpen что возвращает? Ты проверяешь что он возвращает не NULL ?
0
1 / 1 / 1
Регистрация: 07.05.2014
Сообщений: 44
28.07.2014, 10:40  [ТС] 8
Неа, поставлю проверку обязательно!
Спасибо за совет!
А как лучше сделать, через IF или TRY/CATCH?

-----------------
Решил проблему тем, что перенёс выделение памяти выше на несколько строк, поставил перед вот этим блоком
SNMPAPI bx=0;
SnmpVarBind OIDvarbind={0};
SnmpMgrStrToOid (OID, &OIDvarbind.name);
OIDvarbind.value.asnType = ASN_NULL;
---------------

Люди, будьте добры, подскажите, пожалуйста, правильно ли я получаю версию программы для распространения?
Она у меня всего 20 КБ, а ведь по идее надо в неё включить библиотеки, объявленные в начале... Так ведь?
0
28.07.2014, 10:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2014, 10:40
Помогаю со студенческими работами здесь

Не могу найти ошибку в коде программы
Лабу задали, сам в программировании ничегошеньки вот уважаемые данный код ...

Найти ошибку в коде расчетной программы
Написал маленьку расчетную программу. но она почему то всегда выдает ноль. Помогите разобраться,...

Надо найти ошибку в коде программы
Программа должна конвертировать xml в текстовый файл. Все запускается, но в результате получается...

Phonon при компиляции релиз программы выдает ошибку
При релиз компиляции phonon выдает вот такие ошибки (1 скрин) Вот код реализации : ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru