Forum Replies Created
-
AuthorPosts
-
JordanWParticipant
Hi Ket,
Before I want to update GCC , I updated the bin-utils (ld linker).
This fixed my debugging issue, to find the source files while debugging.I was using ld version 2.20 and updated it to 2.23.
Thanks for all your help!
JordanWParticipantHi Ket,
Ii already had build the newest version of GDB, I am using version 7.6.
JordanWParticipantHi Ket,
Yes I found the following in the binary executable:
0804c1e0 <_zn11application12widthmonitor25capplication_widthmonitor15detectedgesfastepn6camera10timageinfoe>:
void CApplication_WidthMonitor::DetectEdgesFast(TImageInfo* image)
{
804c1e0: 55 push %ebp
804c1e1: 89 e5 mov %esp,%ebp
804c1e3: 53 push %ebx
804c1e4: 81 ec 84 00 00 00 sub $0x84,%esp
// @ TODO implement Intensityfilter
if (mpIntensityFilter) { mpIntensityFilter->Initialise(); }
804c1ea: 8b 45 08 mov 0x8(%ebp),%eax
804c1ed: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c1f3: 85 c0 test %eax,%eax
804c1f5: 74 1e je 804c215 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x35>
804c1f7: 8b 45 08 mov 0x8(%ebp),%eax
804c1fa: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c200: 8b 00 mov (%eax),%eax
804c202: 83 c0 08 add $0x8,%eax
804c205: 8b 10 mov (%eax),%edx
804c207: 8b 45 08 mov 0x8(%ebp),%eax
804c20a: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c210: 89 04 24 mov %eax,(%esp)
804c213: ff d2 call *%edx
TImagePtr columPtr;
int inc;if (mLeftsideRight)
804c215: 8b 45 08 mov 0x8(%ebp),%eax
804c218: 0f b6 80 3c 1c 00 00 movzbl 0x1c3c(%eax),%eax
804c21f: 84 c0 test %al,%al
804c221: 74 40 je 804c263 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x83>
{
columPtr = image->Image + ROIOffsetX + image->Width – 1 + ROIOffsetY * image->Pitch;
804c223: 8b 45 0c mov 0xc(%ebp),%eax
804c226: 8b 10 mov (%eax),%edx
804c228: 8b 45 08 mov 0x8(%ebp),%eax
804c22b: 8b 80 c4 07 00 00 mov 0x7c4(%eax),%eax
804c231: 89 c1 mov %eax,%ecx
804c233: 8b 45 0c mov 0xc(%ebp),%eax
804c236: 8b 40 10 mov 0x10(%eax),%eax
804c239: 8d 1c 01 lea (%ecx,%eax,1),%ebx
804c23c: 8b 45 08 mov 0x8(%ebp),%eax
804c23f: 8b 88 c0 07 00 00 mov 0x7c0(%eax),%ecx
804c245: 8b 45 0c mov 0xc(%ebp),%eax
804c248: 8b 40 18 mov 0x18(%eax),%eax
804c24b: 0f af c1 imul %ecx,%eax
804c24e: 8d 04 03 lea (%ebx,%eax,1),%eax
804c251: 83 e8 01 sub $0x1,%eax
804c254: 8d 04 02 lea (%edx,%eax,1),%eax
804c257: 89 45 f4 mov %eax,-0xc(%ebp)
inc = -1;
804c25a: c7 45 f0 ff ff ff ff movl $0xffffffff,-0x10(%ebp)
804c261: eb 32 jmp 804c295 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xb5>
}
else
{
columPtr = image->Image + ROIOffsetX + ROIOffsetY * image->Pitch;
804c263: 8b 45 0c mov 0xc(%ebp),%eax
804c266: 8b 10 mov (%eax),%edx
804c268: 8b 45 08 mov 0x8(%ebp),%eax
804c26b: 8b 80 c4 07 00 00 mov 0x7c4(%eax),%eax
804c271: 89 c1 mov %eax,%ecx
804c273: 8b 45 08 mov 0x8(%ebp),%eax
804c276: 8b 98 c0 07 00 00 mov 0x7c0(%eax),%ebx
804c27c: 8b 45 0c mov 0xc(%ebp),%eax
804c27f: 8b 40 18 mov 0x18(%eax),%eax
804c282: 0f af c3 imul %ebx,%eax
804c285: 8d 04 01 lea (%ecx,%eax,1),%eax
804c288: 8d 04 02 lea (%edx,%eax,1),%eax
804c28b: 89 45 f4 mov %eax,-0xc(%ebp)
inc = 1;
804c28e: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp)
}unsigned int delay=mpIntensityFilter==NULL ? 0 : (unsigned int)mpIntensityFilter->Delay();
804c295: 8b 45 08 mov 0x8(%ebp),%eax
804c298: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c29e: 85 c0 test %eax,%eax
804c2a0: 74 2f je 804c2d1 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xf1>
804c2a2: 8b 45 08 mov 0x8(%ebp),%eax
804c2a5: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c2ab: 89 04 24 mov %eax,(%esp)
804c2ae: e8 f5 07 00 00 call 804caa8 <_zn7cfilterihe5delayev>
804c2b3: d9 7d b6 fnstcw -0x4a(%ebp)
804c2b6: 0f b7 45 b6 movzwl -0x4a(%ebp),%eax
804c2ba: b4 0c mov $0xc,%ah
804c2bc: 66 89 45 b4 mov %ax,-0x4c(%ebp)
804c2c0: d9 6d b4 fldcw -0x4c(%ebp)
804c2c3: df 7d a8 fistpll -0x58(%ebp)
804c2c6: d9 6d b6 fldcw -0x4a(%ebp)
804c2c9: 8b 45 a8 mov -0x58(%ebp),%eax
804c2cc: 8b 55 ac mov -0x54(%ebp),%edx
804c2cf: eb 05 jmp 804c2d6 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xf6>
804c2d1: b8 00 00 00 00 mov $0x0,%eax
804c2d6: 89 45 c4 mov %eax,-0x3c(%ebp)
unsigned char minIntensity = 255;
804c2d9: c6 45 ef ff movb $0xff,-0x11(%ebp)
unsigned char maxIntensity = 0;
804c2dd: c6 45 ee 00 movb $0x0,-0x12(%ebp)// @TODO Implement treshold value from ini setting
//unsigned char threshold = (unsigned char) (float)(pScanSettings->mLimHigh + pScanSettings->mLimLow)/2;
unsigned char threshold = 50;
804c2e1: c6 45 c3 32 movb $0x32,-0x3d(%ebp)
TEdgeDetectionState prvState = EDGE_DETECTION_STABLE;
804c2e5: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp)
unsigned char prvFilteredIntensity = 0;
804c2ec: c6 45 e7 00 movb $0x0,-0x19(%ebp)bool pendingPosEdge = false;
804c2f0: c6 45 e6 00 movb $0x0,-0x1a(%ebp)
bool pendingNegEdge = false;
804c2f4: c6 45 e5 00 movb $0x0,-0x1b(%ebp)
unsigned char edge_maximum = 0;
804c2f8: c6 45 e4 00 movb $0x0,-0x1c(%ebp)
unsigned char edge_minimum = 0;
804c2fc: c6 45 e3 00 movb $0x0,-0x1d(%ebp)
unsigned char local_max = 0;
804c300: c6 45 e2 00 movb $0x0,-0x1e(%ebp)
unsigned char local_min = 0;
804c304: c6 45 e1 00 movb $0x0,-0x1f(%ebp)for (unsigned int i=0; i
Width; i++)
804c308: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp)
804c30f: e9 0c 03 00 00 jmp 804c620 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x440>
{
int sum = 0;
804c314: c7 45 d8 00 00 00 00 movl $0x0,-0x28(%ebp)
TImagePtr pixel = columPtr;
804c31b: 8b 45 f4 mov -0xc(%ebp),%eax
804c31e: 89 45 d4 mov %eax,-0x2c(%ebp)if (imageHeight==1)
804c321: 8b 45 08 mov 0x8(%ebp),%eax
804c324: 8b 80 b0 07 00 00 mov 0x7b0(%eax),%eax
804c32a: 83 f8 01 cmp $0x1,%eax
804c32d: 75 16 jne 804c345 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x165>
{
mVirtualLine = *pixel;
804c32f: 8b 45 d4 mov -0x2c(%ebp),%eax
804c332: 0f b6 00 movzbl (%eax),%eax
804c335: 8b 55 08 mov 0x8(%ebp),%edx
804c338: 03 55 dc add -0x24(%ebp),%edx
804c33b: 81 c2 e0 07 00 00 add $0x7e0,%edx
804c341: 88 02 mov %al,(%edx)
804c343: eb 5a jmp 804c39f <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x1bf>
}
else
{
for (unsigned int j=0; j804c345: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%ebp)
804c34c: eb 19 jmp 804c367 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x187>
{
sum+=*pixel;
804c34e: 8b 45 d4 mov -0x2c(%ebp),%eax
804c351: 0f b6 00 movzbl (%eax),%eax
804c354: 0f b6 c0 movzbl %al,%eax
804c357: 01 45 d8 add %eax,-0x28(%ebp)
pixel+=image->Pitch;
804c35a: 8b 45 0c mov 0xc(%ebp),%eax
804c35d: 8b 40 18 mov 0x18(%eax),%eax
804c360: 01 45 d4 add %eax,-0x2c(%ebp)
{
mVirtualLine = *pixel;
}
else
{
for (unsigned int j=0; j804c363: 83 45 d0 01 addl $0x1,-0x30(%ebp)
804c367: 8b 45 08 mov 0x8(%ebp),%eax
804c36a: 8b 80 b0 07 00 00 mov 0x7b0(%eax),%eax
804c370: 3b 45 d0 cmp -0x30(%ebp),%eax
804c373: 0f 97 c0 seta %al
804c376: 84 c0 test %al,%al
804c378: 75 d4 jne 804c34e <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x16e>
{
sum+=*pixel;
pixel+=image->Pitch;
}
mVirtualLine = sum / imageHeight;
804c37a: 8b 45 08 mov 0x8(%ebp),%eax
804c37d: 8b 80 b0 07 00 00 mov 0x7b0(%eax),%eax
804c383: 89 45 a4 mov %eax,-0x5c(%ebp)
804c386: 8b 45 d8 mov -0x28(%ebp),%eax
804c389: 89 c2 mov %eax,%edx
804c38b: c1 fa 1f sar $0x1f,%edx
804c38e: f7 7d a4 idivl -0x5c(%ebp)
804c391: 8b 55 08 mov 0x8(%ebp),%edx
804c394: 03 55 dc add -0x24(%ebp),%edx
804c397: 81 c2 e0 07 00 00 add $0x7e0,%edx
804c39d: 88 02 mov %al,(%edx)
}
}
*/unsigned char filteredIntensity;
if (mpIntensityFilter)
804c39f: 8b 45 08 mov 0x8(%ebp),%eax
804c3a2: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c3a8: 85 c0 test %eax,%eax
804c3aa: 74 49 je 804c3f5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x215>
{
mpIntensityFilter->Update(mVirtualLine);
804c3ac: 8b 45 08 mov 0x8(%ebp),%eax
804c3af: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c3b5: 8b 00 mov (%eax),%eax
804c3b7: 83 c0 18 add $0x18,%eax
804c3ba: 8b 08 mov (%eax),%ecx
804c3bc: 8b 45 08 mov 0x8(%ebp),%eax
804c3bf: 03 45 dc add -0x24(%ebp),%eax
804c3c2: 05 e0 07 00 00 add $0x7e0,%eax
804c3c7: 0f b6 00 movzbl (%eax),%eax
804c3ca: 0f b6 d0 movzbl %al,%edx
804c3cd: 8b 45 08 mov 0x8(%ebp),%eax
804c3d0: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c3d6: 89 54 24 04 mov %edx,0x4(%esp)
804c3da: 89 04 24 mov %eax,(%esp)
804c3dd: ff d1 call *%ecx
filteredIntensity = mpIntensityFilter->Get();
804c3df: 8b 45 08 mov 0x8(%ebp),%eax
804c3e2: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
804c3e8: 89 04 24 mov %eax,(%esp)
804c3eb: e8 cc 06 00 00 call 804cabc <_zn7cfilterihe3getev>
804c3f0: 88 45 cf mov %al,-0x31(%ebp)
804c3f3: eb 11 jmp 804c406 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x226>
}
else
{
filteredIntensity = mVirtualLine;
804c3f5: 8b 45 08 mov 0x8(%ebp),%eax
804c3f8: 03 45 dc add -0x24(%ebp),%eax
804c3fb: 05 e0 07 00 00 add $0x7e0,%eax
804c400: 0f b6 00 movzbl (%eax),%eax
804c403: 88 45 cf mov %al,-0x31(%ebp)
}
mFilteredLine = filteredIntensity;
804c406: 8b 45 08 mov 0x8(%ebp),%eax
804c409: 8d 90 20 1c 00 00 lea 0x1c20(%eax),%edx
804c40f: 8b 45 dc mov -0x24(%ebp),%eax
804c412: 89 44 24 04 mov %eax,0x4(%esp)
804c416: 89 14 24 mov %edx,(%esp)
804c419: e8 aa 06 00 00 call 804cac8 <_znst6vectorihsaiheeixej>
804c41e: 0f b6 55 cf movzbl -0x31(%ebp),%edx
804c422: 88 10 mov %dl,(%eax)if (i==0) { prvFilteredIntensity = filteredIntensity; }
804c424: 83 7d dc 00 cmpl $0x0,-0x24(%ebp)
804c428: 75 07 jne 804c431 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x251>
804c42a: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c42e: 88 45 e7 mov %al,-0x19(%ebp)if (filteredIntensity < minIntensity) { minIntensity = (unsigned char)filteredIntensity; }
804c431: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c435: 3a 45 ef cmp -0x11(%ebp),%al
804c438: 73 07 jae 804c441 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x261>
804c43a: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c43e: 88 45 ef mov %al,-0x11(%ebp)
if (filteredIntensity > maxIntensity) { maxIntensity = (unsigned char)filteredIntensity; }
804c441: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c445: 3a 45 ee cmp -0x12(%ebp),%al
804c448: 76 07 jbe 804c451 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x271>
804c44a: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c44e: 88 45 ee mov %al,-0x12(%ebp)TEdgeDetectionState state = EDGE_DETECTION_STABLE;
804c451: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%ebp)//rising
if (filteredIntensity-prvFilteredIntensity > 0)
804c458: 0f b6 55 cf movzbl -0x31(%ebp),%edx
804c45c: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c460: 89 d1 mov %edx,%ecx
804c462: 29 c1 sub %eax,%ecx
804c464: 89 c8 mov %ecx,%eax
804c466: 85 c0 test %eax,%eax
804c468: 7e 5b jle 804c4c5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e5>
{
state = EDGE_DETECTION_RISING;
804c46a: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp)
local_max = filteredIntensity;
804c471: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c475: 88 45 e2 mov %al,-0x1e(%ebp)
if (prvState != EDGE_DETECTION_RISING)
804c478: 83 7d e8 01 cmpl $0x1,-0x18(%ebp)
804c47c: 74 47 je 804c4c5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e5>
{
if (prvState == EDGE_DETECTION_FALLING) { local_min = prvFilteredIntensity; }
804c47e: 83 7d e8 02 cmpl $0x2,-0x18(%ebp)
804c482: 75 07 jne 804c48b <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2ab>
804c484: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c488: 88 45 e1 mov %al,-0x1f(%ebp)if (pendingPosEdge)
804c48b: 80 7d e6 00 cmpb $0x0,-0x1a(%ebp)
804c48f: 74 34 je 804c4c5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e5>
{
//add pos edge
pendingPosEdge = false;
804c491: c6 45 e6 00 movb $0x0,-0x1a(%ebp)
edge_minimum = local_min;
804c495: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax
804c499: 88 45 e3 mov %al,-0x1d(%ebp)
AddPosEdge(i, edge_minimum, edge_maximum, delay);
804c49c: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
804c4a0: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
804c4a4: 8b 4d c4 mov -0x3c(%ebp),%ecx
804c4a7: 89 4c 24 10 mov %ecx,0x10(%esp)
804c4ab: 89 54 24 0c mov %edx,0xc(%esp)
804c4af: 89 44 24 08 mov %eax,0x8(%esp)
804c4b3: 8b 45 dc mov -0x24(%ebp),%eax
804c4b6: 89 44 24 04 mov %eax,0x4(%esp)
804c4ba: 8b 45 08 mov 0x8(%ebp),%eax
804c4bd: 89 04 24 mov %eax,(%esp)
804c4c0: e8 93 01 00 00 call 804c658 <_zn11application12widthmonitor25capplication_widthmonitor10addposedgeejhhj>
}
}
}//falling
if (filteredIntensity-prvFilteredIntensity < 0)
804c4c5: 0f b6 55 cf movzbl -0x31(%ebp),%edx
804c4c9: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c4cd: 89 d1 mov %edx,%ecx
804c4cf: 29 c1 sub %eax,%ecx
804c4d1: 89 c8 mov %ecx,%eax
804c4d3: 85 c0 test %eax,%eax
804c4d5: 79 5b jns 804c532 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x352>
{
state = EDGE_DETECTION_FALLING;
804c4d7: c7 45 c8 02 00 00 00 movl $0x2,-0x38(%ebp)
local_min = filteredIntensity;
804c4de: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c4e2: 88 45 e1 mov %al,-0x1f(%ebp)
if (prvState != EDGE_DETECTION_FALLING)
804c4e5: 83 7d e8 02 cmpl $0x2,-0x18(%ebp)
804c4e9: 74 47 je 804c532 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x352>
{
if (prvState == EDGE_DETECTION_RISING) { local_max = prvFilteredIntensity; }
804c4eb: 83 7d e8 01 cmpl $0x1,-0x18(%ebp)
804c4ef: 75 07 jne 804c4f8 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x318>
804c4f1: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c4f5: 88 45 e2 mov %al,-0x1e(%ebp)if (pendingNegEdge)
804c4f8: 80 7d e5 00 cmpb $0x0,-0x1b(%ebp)
804c4fc: 74 34 je 804c532 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x352>
{
//add neg edge
pendingNegEdge = false;
804c4fe: c6 45 e5 00 movb $0x0,-0x1b(%ebp)
edge_maximum = local_max;
804c502: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax
804c506: 88 45 e4 mov %al,-0x1c(%ebp)
AddNegEdge(i, edge_minimum, edge_maximum, delay);
804c509: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
804c50d: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
804c511: 8b 4d c4 mov -0x3c(%ebp),%ecx
804c514: 89 4c 24 10 mov %ecx,0x10(%esp)
804c518: 89 54 24 0c mov %edx,0xc(%esp)
804c51c: 89 44 24 08 mov %eax,0x8(%esp)
804c520: 8b 45 dc mov -0x24(%ebp),%eax
804c523: 89 44 24 04 mov %eax,0x4(%esp)
804c527: 8b 45 08 mov 0x8(%ebp),%eax
804c52a: 89 04 24 mov %eax,(%esp)
804c52d: e8 3e 02 00 00 call 804c770 <_zn11application12widthmonitor25capplication_widthmonitor10addnegedgeejhhj>
}
}
}//nor falling, nor rising
if (filteredIntensity-prvFilteredIntensity == 0)
804c532: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c536: 3a 45 e7 cmp -0x19(%ebp),%al
804c539: 0f 85 8e 00 00 00 jne 804c5cd <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3ed>
{
//check for pending edges//negative edge:
if (prvState != EDGE_DETECTION_FALLING) { local_max = prvFilteredIntensity; }
804c53f: 83 7d e8 02 cmpl $0x2,-0x18(%ebp)
804c543: 74 07 je 804c54c <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x36c>
804c545: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c549: 88 45 e2 mov %al,-0x1e(%ebp)if (pendingNegEdge)
804c54c: 80 7d e5 00 cmpb $0x0,-0x1b(%ebp)
804c550: 74 34 je 804c586 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3a6>
{
//add neg edge
pendingNegEdge = false;
804c552: c6 45 e5 00 movb $0x0,-0x1b(%ebp)
edge_maximum = local_max;
804c556: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax
804c55a: 88 45 e4 mov %al,-0x1c(%ebp)
AddNegEdge(i, edge_minimum, edge_maximum, delay);
804c55d: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
804c561: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
804c565: 8b 4d c4 mov -0x3c(%ebp),%ecx
804c568: 89 4c 24 10 mov %ecx,0x10(%esp)
804c56c: 89 54 24 0c mov %edx,0xc(%esp)
804c570: 89 44 24 08 mov %eax,0x8(%esp)
804c574: 8b 45 dc mov -0x24(%ebp),%eax
804c577: 89 44 24 04 mov %eax,0x4(%esp)
804c57b: 8b 45 08 mov 0x8(%ebp),%eax
804c57e: 89 04 24 mov %eax,(%esp)
804c581: e8 ea 01 00 00 call 804c770 <_zn11application12widthmonitor25capplication_widthmonitor10addnegedgeejhhj>
}//positive edge
if (prvState != EDGE_DETECTION_RISING) { local_min = prvFilteredIntensity; }
804c586: 83 7d e8 01 cmpl $0x1,-0x18(%ebp)
804c58a: 74 07 je 804c593 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3b3>
804c58c: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c590: 88 45 e1 mov %al,-0x1f(%ebp)if (pendingPosEdge)
804c593: 80 7d e6 00 cmpb $0x0,-0x1a(%ebp)
804c597: 74 34 je 804c5cd <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3ed>
{
//add pos edge
pendingPosEdge = false;
804c599: c6 45 e6 00 movb $0x0,-0x1a(%ebp)
edge_minimum = local_min;
804c59d: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax
804c5a1: 88 45 e3 mov %al,-0x1d(%ebp)
AddPosEdge(i, edge_minimum, edge_maximum, delay);
804c5a4: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
804c5a8: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
804c5ac: 8b 4d c4 mov -0x3c(%ebp),%ecx
804c5af: 89 4c 24 10 mov %ecx,0x10(%esp)
804c5b3: 89 54 24 0c mov %edx,0xc(%esp)
804c5b7: 89 44 24 08 mov %eax,0x8(%esp)
804c5bb: 8b 45 dc mov -0x24(%ebp),%eax
804c5be: 89 44 24 04 mov %eax,0x4(%esp)
804c5c2: 8b 45 08 mov 0x8(%ebp),%eax
804c5c5: 89 04 24 mov %eax,(%esp)
804c5c8: e8 8b 00 00 00 call 804c658 <_zn11application12widthmonitor25capplication_widthmonitor10addposedgeejhhj>
}
}if (filteredIntensity > threshold && prvFilteredIntensity <= threshold )
804c5cd: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c5d1: 3a 45 c3 cmp -0x3d(%ebp),%al
804c5d4: 76 16 jbe 804c5ec <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x40c>
804c5d6: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c5da: 3a 45 c3 cmp -0x3d(%ebp),%al
804c5dd: 77 0d ja 804c5ec <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x40c>
{
pendingNegEdge = true;
804c5df: c6 45 e5 01 movb $0x1,-0x1b(%ebp)
edge_minimum = local_min;
804c5e3: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax
804c5e7: 88 45 e3 mov %al,-0x1d(%ebp)
804c5ea: eb 1d jmp 804c609 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x429>
}
else if (filteredIntensity < threshold && prvFilteredIntensity >= threshold )
804c5ec: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c5f0: 3a 45 c3 cmp -0x3d(%ebp),%al
804c5f3: 73 14 jae 804c609 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x429>
804c5f5: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
804c5f9: 3a 45 c3 cmp -0x3d(%ebp),%al
804c5fc: 72 0b jb 804c609 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x429>
{
pendingPosEdge = true;
804c5fe: c6 45 e6 01 movb $0x1,-0x1a(%ebp)
edge_maximum = local_max;
804c602: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax
804c606: 88 45 e4 mov %al,-0x1c(%ebp)
}prvState = state;
804c609: 8b 45 c8 mov -0x38(%ebp),%eax
804c60c: 89 45 e8 mov %eax,-0x18(%ebp)
prvFilteredIntensity = filteredIntensity;
804c60f: 0f b6 45 cf movzbl -0x31(%ebp),%eax
804c613: 88 45 e7 mov %al,-0x19(%ebp)
columPtr += inc;
804c616: 8b 45 f0 mov -0x10(%ebp),%eax
804c619: 01 45 f4 add %eax,-0xc(%ebp)
unsigned char edge_maximum = 0;
unsigned char edge_minimum = 0;
unsigned char local_max = 0;
unsigned char local_min = 0;for (unsigned int i=0; i
Width; i++)
804c61c: 83 45 dc 01 addl $0x1,-0x24(%ebp)
804c620: 8b 45 0c mov 0xc(%ebp),%eax
804c623: 8b 40 10 mov 0x10(%eax),%eax
804c626: 3b 45 dc cmp -0x24(%ebp),%eax
804c629: 0f 97 c0 seta %al
804c62c: 84 c0 test %al,%al
804c62e: 0f 85 e0 fc ff ff jne 804c314 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x134>
prvState = state;
prvFilteredIntensity = filteredIntensity;
columPtr += inc;
}diagMinPixelVal = minIntensity;
804c634: 0f b6 55 ef movzbl -0x11(%ebp),%edx
804c638: 8b 45 08 mov 0x8(%ebp),%eax
804c63b: 89 90 d8 07 00 00 mov %edx,0x7d8(%eax)
diagMaxPixelVal = maxIntensity;
804c641: 0f b6 55 ee movzbl -0x12(%ebp),%edx
804c645: 8b 45 08 mov 0x8(%ebp),%eax
804c648: 89 90 dc 07 00 00 mov %edx,0x7dc(%eax)
}
804c64e: 81 c4 84 00 00 00 add $0x84,%esp
804c654: 5b pop %ebx
804c655: 5d pop %ebp
804c656: c3 ret
804c657: 90 nopDo you got a solution for this GDB bug?
JordanWParticipantHi Ket,
Sorry for posting the wrong info. For now the info line works and result in the following:
info line Application::WidthMonitor::CApplication_WidthMonitor::DetectEdgesFast
&”info line Application::WidthMonitor::CApplication_WidthMonitor::DetectEdgesFastn”
No line number information available for address 0x804c190 <_zn11application12widthmonitor25capplication_widthmonitor15detectedgesfastepn6camera10timageinfoe>
OKHere is the DetectEdgesFast function in Application_WidthMonitor.o:
Disassembly of section .text._ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE:
00000000 <_zn11application12widthmonitor25capplication_widthmonitor15detectedgesfastepn6camera10timageinfoe>:
void CApplication_WidthMonitor::DetectEdgesFast(TImageInfo* image)
{
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 53 push %ebx
4: 81 ec 84 00 00 00 sub $0x84,%esp
// @ TODO implement Intensityfilter
if (mpIntensityFilter) { mpIntensityFilter->Initialise(); }
a: 8b 45 08 mov 0x8(%ebp),%eax
d: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
13: 85 c0 test %eax,%eax
15: 74 1e je 35 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x35>
17: 8b 45 08 mov 0x8(%ebp),%eax
1a: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
20: 8b 00 mov (%eax),%eax
22: 83 c0 08 add $0x8,%eax
25: 8b 10 mov (%eax),%edx
27: 8b 45 08 mov 0x8(%ebp),%eax
2a: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
30: 89 04 24 mov %eax,(%esp)
33: ff d2 call *%edx
TImagePtr columPtr;
int inc;if (mLeftsideRight)
35: 8b 45 08 mov 0x8(%ebp),%eax
38: 0f b6 80 3c 1c 00 00 movzbl 0x1c3c(%eax),%eax
3f: 84 c0 test %al,%al
41: 74 40 je 83 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x83>
{
columPtr = image->Image + ROIOffsetX + image->Width – 1 + ROIOffsetY * image->Pitch;
43: 8b 45 0c mov 0xc(%ebp),%eax
46: 8b 10 mov (%eax),%edx
48: 8b 45 08 mov 0x8(%ebp),%eax
4b: 8b 80 c4 07 00 00 mov 0x7c4(%eax),%eax
51: 89 c1 mov %eax,%ecx
53: 8b 45 0c mov 0xc(%ebp),%eax
56: 8b 40 10 mov 0x10(%eax),%eax
59: 8d 1c 01 lea (%ecx,%eax,1),%ebx
5c: 8b 45 08 mov 0x8(%ebp),%eax
5f: 8b 88 c0 07 00 00 mov 0x7c0(%eax),%ecx
65: 8b 45 0c mov 0xc(%ebp),%eax
68: 8b 40 18 mov 0x18(%eax),%eax
6b: 0f af c1 imul %ecx,%eax
6e: 8d 04 03 lea (%ebx,%eax,1),%eax
71: 83 e8 01 sub $0x1,%eax
74: 8d 04 02 lea (%edx,%eax,1),%eax
77: 89 45 f4 mov %eax,-0xc(%ebp)
inc = -1;
7a: c7 45 f0 ff ff ff ff movl $0xffffffff,-0x10(%ebp)
81: eb 32 jmp b5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xb5>
}
else
{
columPtr = image->Image + ROIOffsetX + ROIOffsetY * image->Pitch;
83: 8b 45 0c mov 0xc(%ebp),%eax
86: 8b 10 mov (%eax),%edx
88: 8b 45 08 mov 0x8(%ebp),%eax
8b: 8b 80 c4 07 00 00 mov 0x7c4(%eax),%eax
91: 89 c1 mov %eax,%ecx
93: 8b 45 08 mov 0x8(%ebp),%eax
96: 8b 98 c0 07 00 00 mov 0x7c0(%eax),%ebx
9c: 8b 45 0c mov 0xc(%ebp),%eax
9f: 8b 40 18 mov 0x18(%eax),%eax
a2: 0f af c3 imul %ebx,%eax
a5: 8d 04 01 lea (%ecx,%eax,1),%eax
a8: 8d 04 02 lea (%edx,%eax,1),%eax
ab: 89 45 f4 mov %eax,-0xc(%ebp)
inc = 1;
ae: c7 45 f0 01 00 00 00 movl $0x1,-0x10(%ebp)
}unsigned int delay=mpIntensityFilter==NULL ? 0 : (unsigned int)mpIntensityFilter->Delay();
b5: 8b 45 08 mov 0x8(%ebp),%eax
b8: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
be: 85 c0 test %eax,%eax
c0: 74 2f je f1 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xf1>
c2: 8b 45 08 mov 0x8(%ebp),%eax
c5: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
cb: 89 04 24 mov %eax,(%esp)
ce: e8 fc ff ff ff call cf <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xcf>
d3: d9 7d b6 fnstcw -0x4a(%ebp)
d6: 0f b7 45 b6 movzwl -0x4a(%ebp),%eax
da: b4 0c mov $0xc,%ah
dc: 66 89 45 b4 mov %ax,-0x4c(%ebp)
e0: d9 6d b4 fldcw -0x4c(%ebp)
e3: df 7d a8 fistpll -0x58(%ebp)
e6: d9 6d b6 fldcw -0x4a(%ebp)
e9: 8b 45 a8 mov -0x58(%ebp),%eax
ec: 8b 55 ac mov -0x54(%ebp),%edx
ef: eb 05 jmp f6 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0xf6>
f1: b8 00 00 00 00 mov $0x0,%eax
f6: 89 45 c4 mov %eax,-0x3c(%ebp)
unsigned char minIntensity = 255;
f9: c6 45 ef ff movb $0xff,-0x11(%ebp)
unsigned char maxIntensity = 0;
fd: c6 45 ee 00 movb $0x0,-0x12(%ebp)// @TODO Implement treshold value from ini setting
//unsigned char threshold = (unsigned char) (float)(pScanSettings->mLimHigh + pScanSettings->mLimLow)/2;
unsigned char threshold = 50;
101: c6 45 c3 32 movb $0x32,-0x3d(%ebp)
TEdgeDetectionState prvState = EDGE_DETECTION_STABLE;
105: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp)
unsigned char prvFilteredIntensity = 0;
10c: c6 45 e7 00 movb $0x0,-0x19(%ebp)bool pendingPosEdge = false;
110: c6 45 e6 00 movb $0x0,-0x1a(%ebp)
bool pendingNegEdge = false;
114: c6 45 e5 00 movb $0x0,-0x1b(%ebp)
unsigned char edge_maximum = 0;
118: c6 45 e4 00 movb $0x0,-0x1c(%ebp)
unsigned char edge_minimum = 0;
11c: c6 45 e3 00 movb $0x0,-0x1d(%ebp)
unsigned char local_max = 0;
120: c6 45 e2 00 movb $0x0,-0x1e(%ebp)
unsigned char local_min = 0;
124: c6 45 e1 00 movb $0x0,-0x1f(%ebp)for (unsigned int i=0; i
Width; i++)
128: c7 45 dc 00 00 00 00 movl $0x0,-0x24(%ebp)
12f: e9 0c 03 00 00 jmp 440 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x440>
{
int sum = 0;
134: c7 45 d8 00 00 00 00 movl $0x0,-0x28(%ebp)
TImagePtr pixel = columPtr;
13b: 8b 45 f4 mov -0xc(%ebp),%eax
13e: 89 45 d4 mov %eax,-0x2c(%ebp)if (imageHeight==1)
141: 8b 45 08 mov 0x8(%ebp),%eax
144: 8b 80 b0 07 00 00 mov 0x7b0(%eax),%eax
14a: 83 f8 01 cmp $0x1,%eax
14d: 75 16 jne 165 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x165>
{
mVirtualLine = *pixel;
14f: 8b 45 d4 mov -0x2c(%ebp),%eax
152: 0f b6 00 movzbl (%eax),%eax
155: 8b 55 08 mov 0x8(%ebp),%edx
158: 03 55 dc add -0x24(%ebp),%edx
15b: 81 c2 e0 07 00 00 add $0x7e0,%edx
161: 88 02 mov %al,(%edx)
163: eb 5a jmp 1bf <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x1bf>
}
else
{
for (unsigned int j=0; j165: c7 45 d0 00 00 00 00 movl $0x0,-0x30(%ebp)
16c: eb 19 jmp 187 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x187>
{
sum+=*pixel;
16e: 8b 45 d4 mov -0x2c(%ebp),%eax
171: 0f b6 00 movzbl (%eax),%eax
174: 0f b6 c0 movzbl %al,%eax
177: 01 45 d8 add %eax,-0x28(%ebp)
pixel+=image->Pitch;
17a: 8b 45 0c mov 0xc(%ebp),%eax
17d: 8b 40 18 mov 0x18(%eax),%eax
180: 01 45 d4 add %eax,-0x2c(%ebp)
{
mVirtualLine = *pixel;
}
else
{
for (unsigned int j=0; j183: 83 45 d0 01 addl $0x1,-0x30(%ebp)
187: 8b 45 08 mov 0x8(%ebp),%eax
18a: 8b 80 b0 07 00 00 mov 0x7b0(%eax),%eax
190: 3b 45 d0 cmp -0x30(%ebp),%eax
193: 0f 97 c0 seta %al
196: 84 c0 test %al,%al
198: 75 d4 jne 16e <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x16e>
{
sum+=*pixel;
pixel+=image->Pitch;
}
mVirtualLine = sum / imageHeight;
19a: 8b 45 08 mov 0x8(%ebp),%eax
19d: 8b 80 b0 07 00 00 mov 0x7b0(%eax),%eax
1a3: 89 45 a4 mov %eax,-0x5c(%ebp)
1a6: 8b 45 d8 mov -0x28(%ebp),%eax
1a9: 89 c2 mov %eax,%edx
1ab: c1 fa 1f sar $0x1f,%edx
1ae: f7 7d a4 idivl -0x5c(%ebp)
1b1: 8b 55 08 mov 0x8(%ebp),%edx
1b4: 03 55 dc add -0x24(%ebp),%edx
1b7: 81 c2 e0 07 00 00 add $0x7e0,%edx
1bd: 88 02 mov %al,(%edx)
}
}
*/unsigned char filteredIntensity;
if (mpIntensityFilter)
1bf: 8b 45 08 mov 0x8(%ebp),%eax
1c2: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
1c8: 85 c0 test %eax,%eax
1ca: 74 49 je 215 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x215>
{
mpIntensityFilter->Update(mVirtualLine);
1cc: 8b 45 08 mov 0x8(%ebp),%eax
1cf: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
1d5: 8b 00 mov (%eax),%eax
1d7: 83 c0 18 add $0x18,%eax
1da: 8b 08 mov (%eax),%ecx
1dc: 8b 45 08 mov 0x8(%ebp),%eax
1df: 03 45 dc add -0x24(%ebp),%eax
1e2: 05 e0 07 00 00 add $0x7e0,%eax
1e7: 0f b6 00 movzbl (%eax),%eax
1ea: 0f b6 d0 movzbl %al,%edx
1ed: 8b 45 08 mov 0x8(%ebp),%eax
1f0: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
1f6: 89 54 24 04 mov %edx,0x4(%esp)
1fa: 89 04 24 mov %eax,(%esp)
1fd: ff d1 call *%ecx
filteredIntensity = mpIntensityFilter->Get();
1ff: 8b 45 08 mov 0x8(%ebp),%eax
202: 8b 80 c8 07 00 00 mov 0x7c8(%eax),%eax
208: 89 04 24 mov %eax,(%esp)
20b: e8 fc ff ff ff call 20c <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x20c>
210: 88 45 cf mov %al,-0x31(%ebp)
213: eb 11 jmp 226 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x226>
}
else
{
filteredIntensity = mVirtualLine;
215: 8b 45 08 mov 0x8(%ebp),%eax
218: 03 45 dc add -0x24(%ebp),%eax
21b: 05 e0 07 00 00 add $0x7e0,%eax
220: 0f b6 00 movzbl (%eax),%eax
223: 88 45 cf mov %al,-0x31(%ebp)
}
mFilteredLine = filteredIntensity;
226: 8b 45 08 mov 0x8(%ebp),%eax
229: 8d 90 20 1c 00 00 lea 0x1c20(%eax),%edx
22f: 8b 45 dc mov -0x24(%ebp),%eax
232: 89 44 24 04 mov %eax,0x4(%esp)
236: 89 14 24 mov %edx,(%esp)
239: e8 fc ff ff ff call 23a <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x23a>
23e: 0f b6 55 cf movzbl -0x31(%ebp),%edx
242: 88 10 mov %dl,(%eax)if (i==0) { prvFilteredIntensity = filteredIntensity; }
244: 83 7d dc 00 cmpl $0x0,-0x24(%ebp)
248: 75 07 jne 251 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x251>
24a: 0f b6 45 cf movzbl -0x31(%ebp),%eax
24e: 88 45 e7 mov %al,-0x19(%ebp)if (filteredIntensity < minIntensity) { minIntensity = (unsigned char)filteredIntensity; }
251: 0f b6 45 cf movzbl -0x31(%ebp),%eax
255: 3a 45 ef cmp -0x11(%ebp),%al
258: 73 07 jae 261 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x261>
25a: 0f b6 45 cf movzbl -0x31(%ebp),%eax
25e: 88 45 ef mov %al,-0x11(%ebp)
if (filteredIntensity > maxIntensity) { maxIntensity = (unsigned char)filteredIntensity; }
261: 0f b6 45 cf movzbl -0x31(%ebp),%eax
265: 3a 45 ee cmp -0x12(%ebp),%al
268: 76 07 jbe 271 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x271>
26a: 0f b6 45 cf movzbl -0x31(%ebp),%eax
26e: 88 45 ee mov %al,-0x12(%ebp)TEdgeDetectionState state = EDGE_DETECTION_STABLE;
271: c7 45 c8 00 00 00 00 movl $0x0,-0x38(%ebp)//rising
if (filteredIntensity-prvFilteredIntensity > 0)
278: 0f b6 55 cf movzbl -0x31(%ebp),%edx
27c: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
280: 89 d1 mov %edx,%ecx
282: 29 c1 sub %eax,%ecx
284: 89 c8 mov %ecx,%eax
286: 85 c0 test %eax,%eax
288: 7e 5b jle 2e5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e5>
{
state = EDGE_DETECTION_RISING;
28a: c7 45 c8 01 00 00 00 movl $0x1,-0x38(%ebp)
local_max = filteredIntensity;
291: 0f b6 45 cf movzbl -0x31(%ebp),%eax
295: 88 45 e2 mov %al,-0x1e(%ebp)
if (prvState != EDGE_DETECTION_RISING)
298: 83 7d e8 01 cmpl $0x1,-0x18(%ebp)
29c: 74 47 je 2e5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e5>
{
if (prvState == EDGE_DETECTION_FALLING) { local_min = prvFilteredIntensity; }
29e: 83 7d e8 02 cmpl $0x2,-0x18(%ebp)
2a2: 75 07 jne 2ab <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2ab>
2a4: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
2a8: 88 45 e1 mov %al,-0x1f(%ebp)if (pendingPosEdge)
2ab: 80 7d e6 00 cmpb $0x0,-0x1a(%ebp)
2af: 74 34 je 2e5 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e5>
{
//add pos edge
pendingPosEdge = false;
2b1: c6 45 e6 00 movb $0x0,-0x1a(%ebp)
edge_minimum = local_min;
2b5: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax
2b9: 88 45 e3 mov %al,-0x1d(%ebp)
AddPosEdge(i, edge_minimum, edge_maximum, delay);
2bc: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
2c0: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
2c4: 8b 4d c4 mov -0x3c(%ebp),%ecx
2c7: 89 4c 24 10 mov %ecx,0x10(%esp)
2cb: 89 54 24 0c mov %edx,0xc(%esp)
2cf: 89 44 24 08 mov %eax,0x8(%esp)
2d3: 8b 45 dc mov -0x24(%ebp),%eax
2d6: 89 44 24 04 mov %eax,0x4(%esp)
2da: 8b 45 08 mov 0x8(%ebp),%eax
2dd: 89 04 24 mov %eax,(%esp)
2e0: e8 fc ff ff ff call 2e1 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x2e1>
}
}
}//falling
if (filteredIntensity-prvFilteredIntensity < 0)
2e5: 0f b6 55 cf movzbl -0x31(%ebp),%edx
2e9: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
2ed: 89 d1 mov %edx,%ecx
2ef: 29 c1 sub %eax,%ecx
2f1: 89 c8 mov %ecx,%eax
2f3: 85 c0 test %eax,%eax
2f5: 79 5b jns 352 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x352>
{
state = EDGE_DETECTION_FALLING;
2f7: c7 45 c8 02 00 00 00 movl $0x2,-0x38(%ebp)
local_min = filteredIntensity;
2fe: 0f b6 45 cf movzbl -0x31(%ebp),%eax
302: 88 45 e1 mov %al,-0x1f(%ebp)
if (prvState != EDGE_DETECTION_FALLING)
305: 83 7d e8 02 cmpl $0x2,-0x18(%ebp)
309: 74 47 je 352 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x352>
{
if (prvState == EDGE_DETECTION_RISING) { local_max = prvFilteredIntensity; }
30b: 83 7d e8 01 cmpl $0x1,-0x18(%ebp)
30f: 75 07 jne 318 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x318>
311: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
315: 88 45 e2 mov %al,-0x1e(%ebp)if (pendingNegEdge)
318: 80 7d e5 00 cmpb $0x0,-0x1b(%ebp)
31c: 74 34 je 352 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x352>
{
//add neg edge
pendingNegEdge = false;
31e: c6 45 e5 00 movb $0x0,-0x1b(%ebp)
edge_maximum = local_max;
322: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax
326: 88 45 e4 mov %al,-0x1c(%ebp)
AddNegEdge(i, edge_minimum, edge_maximum, delay);
329: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
32d: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
331: 8b 4d c4 mov -0x3c(%ebp),%ecx
334: 89 4c 24 10 mov %ecx,0x10(%esp)
338: 89 54 24 0c mov %edx,0xc(%esp)
33c: 89 44 24 08 mov %eax,0x8(%esp)
340: 8b 45 dc mov -0x24(%ebp),%eax
343: 89 44 24 04 mov %eax,0x4(%esp)
347: 8b 45 08 mov 0x8(%ebp),%eax
34a: 89 04 24 mov %eax,(%esp)
34d: e8 fc ff ff ff call 34e <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x34e>
}
}
}//nor falling, nor rising
if (filteredIntensity-prvFilteredIntensity == 0)
352: 0f b6 45 cf movzbl -0x31(%ebp),%eax
356: 3a 45 e7 cmp -0x19(%ebp),%al
359: 0f 85 8e 00 00 00 jne 3ed <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3ed>
{
//check for pending edges//negative edge:
if (prvState != EDGE_DETECTION_FALLING) { local_max = prvFilteredIntensity; }
35f: 83 7d e8 02 cmpl $0x2,-0x18(%ebp)
363: 74 07 je 36c <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x36c>
365: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
369: 88 45 e2 mov %al,-0x1e(%ebp)if (pendingNegEdge)
36c: 80 7d e5 00 cmpb $0x0,-0x1b(%ebp)
370: 74 34 je 3a6 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3a6>
{
//add neg edge
pendingNegEdge = false;
372: c6 45 e5 00 movb $0x0,-0x1b(%ebp)
edge_maximum = local_max;
376: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax
37a: 88 45 e4 mov %al,-0x1c(%ebp)
AddNegEdge(i, edge_minimum, edge_maximum, delay);
37d: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
381: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
385: 8b 4d c4 mov -0x3c(%ebp),%ecx
388: 89 4c 24 10 mov %ecx,0x10(%esp)
38c: 89 54 24 0c mov %edx,0xc(%esp)
390: 89 44 24 08 mov %eax,0x8(%esp)
394: 8b 45 dc mov -0x24(%ebp),%eax
397: 89 44 24 04 mov %eax,0x4(%esp)
39b: 8b 45 08 mov 0x8(%ebp),%eax
39e: 89 04 24 mov %eax,(%esp)
3a1: e8 fc ff ff ff call 3a2 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3a2>
}//positive edge
if (prvState != EDGE_DETECTION_RISING) { local_min = prvFilteredIntensity; }
3a6: 83 7d e8 01 cmpl $0x1,-0x18(%ebp)
3aa: 74 07 je 3b3 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3b3>
3ac: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
3b0: 88 45 e1 mov %al,-0x1f(%ebp)if (pendingPosEdge)
3b3: 80 7d e6 00 cmpb $0x0,-0x1a(%ebp)
3b7: 74 34 je 3ed <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3ed>
{
//add pos edge
pendingPosEdge = false;
3b9: c6 45 e6 00 movb $0x0,-0x1a(%ebp)
edge_minimum = local_min;
3bd: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax
3c1: 88 45 e3 mov %al,-0x1d(%ebp)
AddPosEdge(i, edge_minimum, edge_maximum, delay);
3c4: 0f b6 55 e4 movzbl -0x1c(%ebp),%edx
3c8: 0f b6 45 e3 movzbl -0x1d(%ebp),%eax
3cc: 8b 4d c4 mov -0x3c(%ebp),%ecx
3cf: 89 4c 24 10 mov %ecx,0x10(%esp)
3d3: 89 54 24 0c mov %edx,0xc(%esp)
3d7: 89 44 24 08 mov %eax,0x8(%esp)
3db: 8b 45 dc mov -0x24(%ebp),%eax
3de: 89 44 24 04 mov %eax,0x4(%esp)
3e2: 8b 45 08 mov 0x8(%ebp),%eax
3e5: 89 04 24 mov %eax,(%esp)
3e8: e8 fc ff ff ff call 3e9 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x3e9>
}
}if (filteredIntensity > threshold && prvFilteredIntensity <= threshold )
3ed: 0f b6 45 cf movzbl -0x31(%ebp),%eax
3f1: 3a 45 c3 cmp -0x3d(%ebp),%al
3f4: 76 16 jbe 40c <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x40c>
3f6: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
3fa: 3a 45 c3 cmp -0x3d(%ebp),%al
3fd: 77 0d ja 40c <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x40c>
{
pendingNegEdge = true;
3ff: c6 45 e5 01 movb $0x1,-0x1b(%ebp)
edge_minimum = local_min;
403: 0f b6 45 e1 movzbl -0x1f(%ebp),%eax
407: 88 45 e3 mov %al,-0x1d(%ebp)
40a: eb 1d jmp 429 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x429>
}
else if (filteredIntensity < threshold && prvFilteredIntensity >= threshold )
40c: 0f b6 45 cf movzbl -0x31(%ebp),%eax
410: 3a 45 c3 cmp -0x3d(%ebp),%al
413: 73 14 jae 429 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x429>
415: 0f b6 45 e7 movzbl -0x19(%ebp),%eax
419: 3a 45 c3 cmp -0x3d(%ebp),%al
41c: 72 0b jb 429 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x429>
{
pendingPosEdge = true;
41e: c6 45 e6 01 movb $0x1,-0x1a(%ebp)
edge_maximum = local_max;
422: 0f b6 45 e2 movzbl -0x1e(%ebp),%eax
426: 88 45 e4 mov %al,-0x1c(%ebp)
}prvState = state;
429: 8b 45 c8 mov -0x38(%ebp),%eax
42c: 89 45 e8 mov %eax,-0x18(%ebp)
prvFilteredIntensity = filteredIntensity;
42f: 0f b6 45 cf movzbl -0x31(%ebp),%eax
433: 88 45 e7 mov %al,-0x19(%ebp)
columPtr += inc;
436: 8b 45 f0 mov -0x10(%ebp),%eax
439: 01 45 f4 add %eax,-0xc(%ebp)
unsigned char edge_maximum = 0;
unsigned char edge_minimum = 0;
unsigned char local_max = 0;
unsigned char local_min = 0;for (unsigned int i=0; i
Width; i++)
43c: 83 45 dc 01 addl $0x1,-0x24(%ebp)
440: 8b 45 0c mov 0xc(%ebp),%eax
443: 8b 40 10 mov 0x10(%eax),%eax
446: 3b 45 dc cmp -0x24(%ebp),%eax
449: 0f 97 c0 seta %al
44c: 84 c0 test %al,%al
44e: 0f 85 e0 fc ff ff jne 134 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor15DetectEdgesFastEPN6Camera10TImageInfoE+0x134>
prvState = state;
prvFilteredIntensity = filteredIntensity;
columPtr += inc;
}diagMinPixelVal = minIntensity;
454: 0f b6 55 ef movzbl -0x11(%ebp),%edx
458: 8b 45 08 mov 0x8(%ebp),%eax
45b: 89 90 d8 07 00 00 mov %edx,0x7d8(%eax)
diagMaxPixelVal = maxIntensity;
461: 0f b6 55 ee movzbl -0x12(%ebp),%edx
465: 8b 45 08 mov 0x8(%ebp),%eax
468: 89 90 dc 07 00 00 mov %edx,0x7dc(%eax)
}
46e: 81 c4 84 00 00 00 add $0x84,%esp
474: 5b pop %ebx
475: 5d pop %ebp
476: c3 retJordanWParticipantHi,
I have changed the location of DetectEdgesFast to the Application_WidthMonitor class. I can debug function like ProcessImage(), but i can’t debug DetectEdgesFast() of same class Application_WidthMonitor.
When I call info line, the gdb session can’t find the function:
info line DetectEdgesFast
&”info line DetectEdgesFastn”
&”Function “DetectEdgesFast” not defined.n”
Function “DetectEdgesFast” not defined.When I search in the objdump of application_withmonitor.o I found the following that looks like he can find the symbol:
Disassembly of section .text._ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE:00000000 <_zn11application12widthmonitor25capplication_widthmonitor12processimageepn6camera10timageinfoe>:
Implementation of ProcessImage
@todo implement
*/
#pragma endregion
void CApplication_WidthMonitor::ProcessImage(TImageInfo* apImageInfo)
{
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 53 push %ebx
4: 83 ec 44 sub $0x44,%esp
DetectEdgesFast(apImageInfo);
7: 8b 45 0c mov 0xc(%ebp),%eax
a: 89 44 24 04 mov %eax,0x4(%esp)
e: 8b 45 08 mov 0x8(%ebp),%eax
11: 89 04 24 mov %eax,(%esp)
14: e8 fc ff ff ff call 15 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x15>lftEdgePos = (edgeCount > 1 && edges[0].type == EDGE_TYPE_POS) ? mPixel2MM.Pixel2MM(edges[0].posPX, edges[0].type) : -99999;
19: 8b 45 08 mov 0x8(%ebp),%eax
1c: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
22: 83 f8 01 cmp $0x1,%eax
25: 76 74 jbe 9b <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x9b>
27: 8b 45 08 mov 0x8(%ebp),%eax
2a: 05 a4 03 00 00 add $0x3a4,%eax
2f: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
36: 00
37: 89 04 24 mov %eax,(%esp)
3a: e8 fc ff ff ff call 3b <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x3b>
3f: 8b 00 mov (%eax),%eax
41: 85 c0 test %eax,%eax
43: 75 56 jne 9b <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x9b>
45: 8b 45 08 mov 0x8(%ebp),%eax
48: 05 a4 03 00 00 add $0x3a4,%eax
4d: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
54: 00
55: 89 04 24 mov %eax,(%esp)
58: e8 fc ff ff ff call 59 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x59>
5d: 8b 18 mov (%eax),%ebx
5f: 8b 45 08 mov 0x8(%ebp),%eax
62: 05 a4 03 00 00 add $0x3a4,%eax
67: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
6e: 00
6f: 89 04 24 mov %eax,(%esp)
72: e8 fc ff ff ff call 73 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x73>
77: 8b 40 04 mov 0x4(%eax),%eax
7a: 8b 55 08 mov 0x8(%ebp),%edx
7d: 81 c2 40 1c 00 00 add $0x1c40,%edx
83: 89 5c 24 08 mov %ebx,0x8(%esp)
87: 89 44 24 04 mov %eax,0x4(%esp)
8b: 89 14 24 mov %edx,(%esp)
8e: e8 fc ff ff ff call 8f <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x8f>
93: d9 5d d4 fstps -0x2c(%ebp)
96: 8b 45 d4 mov -0x2c(%ebp),%eax
99: eb 05 jmp a0 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0xa0>
9b: b8 80 4f c3 c7 mov $0xc7c34f80,%eax
a0: 8b 55 08 mov 0x8(%ebp),%edx
a3: 89 82 7c 07 00 00 mov %eax,0x77c(%edx)
rhtEdgePos = (edgeCount > 1 && edgeCount < edges.size() && edges[edgeCount-1].type == EDGE_TYPE_NEG) ? mPixel2MM.Pixel2MM(edges[edgeCount-1].posPX, edges[edgeCount-1].type) : -99999;
a9: 8b 45 08 mov 0x8(%ebp),%eax
ac: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
b2: 83 f8 01 cmp $0x1,%eax
b5: 0f 86 ae 00 00 00 jbe 169 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x169>
bb: 8b 45 08 mov 0x8(%ebp),%eax
be: 8b 98 b0 03 00 00 mov 0x3b0(%eax),%ebx
c4: 8b 45 08 mov 0x8(%ebp),%eax
c7: 05 a4 03 00 00 add $0x3a4,%eax
cc: 89 04 24 mov %eax,(%esp)
cf: e8 fc ff ff ff call d0 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0xd0>
d4: 39 c3 cmp %eax,%ebx
d6: 0f 83 8d 00 00 00 jae 169 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x169>
dc: 8b 45 08 mov 0x8(%ebp),%eax
df: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
e5: 8d 50 ff lea -0x1(%eax),%edx
e8: 8b 45 08 mov 0x8(%ebp),%eax
eb: 05 a4 03 00 00 add $0x3a4,%eax
f0: 89 54 24 04 mov %edx,0x4(%esp)
f4: 89 04 24 mov %eax,(%esp)
f7: e8 fc ff ff ff call f8 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0xf8>
fc: 8b 00 mov (%eax),%eax
fe: 83 f8 01 cmp $0x1,%eax
101: 75 66 jne 169 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x169>
103: 8b 45 08 mov 0x8(%ebp),%eax
106: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
10c: 8d 50 ff lea -0x1(%eax),%edx
10f: 8b 45 08 mov 0x8(%ebp),%eax
112: 05 a4 03 00 00 add $0x3a4,%eax
117: 89 54 24 04 mov %edx,0x4(%esp)
11b: 89 04 24 mov %eax,(%esp)
11e: e8 fc ff ff ff call 11f <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x11f>
123: 8b 18 mov (%eax),%ebx
125: 8b 45 08 mov 0x8(%ebp),%eax
128: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
12e: 8d 50 ff lea -0x1(%eax),%edx
131: 8b 45 08 mov 0x8(%ebp),%eax
134: 05 a4 03 00 00 add $0x3a4,%eax
139: 89 54 24 04 mov %edx,0x4(%esp)
13d: 89 04 24 mov %eax,(%esp)
140: e8 fc ff ff ff call 141 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x141>
145: 8b 40 04 mov 0x4(%eax),%eax
148: 8b 55 08 mov 0x8(%ebp),%edx
14b: 81 c2 40 1c 00 00 add $0x1c40,%edx
151: 89 5c 24 08 mov %ebx,0x8(%esp)
155: 89 44 24 04 mov %eax,0x4(%esp)
159: 89 14 24 mov %edx,(%esp)
15c: e8 fc ff ff ff call 15d <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x15d>
161: d9 5d d4 fstps -0x2c(%ebp)
164: 8b 45 d4 mov -0x2c(%ebp),%eax
167: eb 05 jmp 16e <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x16e>
169: b8 80 4f c3 c7 mov $0xc7c34f80,%eax
16e: 8b 55 08 mov 0x8(%ebp),%edx
171: 89 82 80 07 00 00 mov %eax,0x780(%edx)
lftEdgeFound = (edgeCount == 2 && edges[0].type == EDGE_TYPE_POS) ? true : false;
177: 8b 45 08 mov 0x8(%ebp),%eax
17a: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
180: 83 f8 02 cmp $0x2,%eax
183: 75 25 jne 1aa <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1aa>
185: 8b 45 08 mov 0x8(%ebp),%eax
188: 05 a4 03 00 00 add $0x3a4,%eax
18d: c7 44 24 04 00 00 00 movl $0x0,0x4(%esp)
194: 00
195: 89 04 24 mov %eax,(%esp)
198: e8 fc ff ff ff call 199 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x199>
19d: 8b 00 mov (%eax),%eax
19f: 85 c0 test %eax,%eax
1a1: 75 07 jne 1aa <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1aa>
1a3: b8 01 00 00 00 mov $0x1,%eax
1a8: eb 05 jmp 1af <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1af>
1aa: b8 00 00 00 00 mov $0x0,%eax
1af: 8b 55 08 mov 0x8(%ebp),%edx
1b2: 88 82 a4 07 00 00 mov %al,0x7a4(%edx)
rhtEdgeFound = (edgeCount == 2 && edges[1].type == EDGE_TYPE_NEG) ? true : false;
1b8: 8b 45 08 mov 0x8(%ebp),%eax
1bb: 8b 80 b0 03 00 00 mov 0x3b0(%eax),%eax
1c1: 83 f8 02 cmp $0x2,%eax
1c4: 75 26 jne 1ec <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1ec>
1c6: 8b 45 08 mov 0x8(%ebp),%eax
1c9: 05 a4 03 00 00 add $0x3a4,%eax
1ce: c7 44 24 04 01 00 00 movl $0x1,0x4(%esp)
1d5: 00
1d6: 89 04 24 mov %eax,(%esp)
1d9: e8 fc ff ff ff call 1da <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1da>
1de: 8b 00 mov (%eax),%eax
1e0: 83 f8 01 cmp $0x1,%eax
1e3: 75 07 jne 1ec <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1ec>
1e5: b8 01 00 00 00 mov $0x1,%eax
1ea: eb 05 jmp 1f1 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x1f1>
1ec: b8 00 00 00 00 mov $0x0,%eax
1f1: 8b 55 08 mov 0x8(%ebp),%edx
1f4: 88 82 a5 07 00 00 mov %al,0x7a5(%edx)
center_position = (lftEdgeFound && rhtEdgeFound) ? (int)((lftEdgePos + rhtEdgePos) / 2) : -22222;
1fa: 8b 45 08 mov 0x8(%ebp),%eax
1fd: 0f b6 80 a4 07 00 00 movzbl 0x7a4(%eax),%eax
204: 84 c0 test %al,%al
206: 74 45 je 24d <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x24d>
208: 8b 45 08 mov 0x8(%ebp),%eax
20b: 0f b6 80 a5 07 00 00 movzbl 0x7a5(%eax),%eax
212: 84 c0 test %al,%al
214: 74 37 je 24d <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x24d>
216: 8b 45 08 mov 0x8(%ebp),%eax
219: d9 80 7c 07 00 00 flds 0x77c(%eax)
21f: 8b 45 08 mov 0x8(%ebp),%eax
222: d9 80 80 07 00 00 flds 0x780(%eax)
228: de c1 faddp %st,%st(1)
22a: d9 05 c8 01 00 00 flds 0x1c8
230: de f9 fdivrp %st,%st(1)
232: d9 7d e6 fnstcw -0x1a(%ebp)
235: 0f b7 45 e6 movzwl -0x1a(%ebp),%eax
239: b4 0c mov $0xc,%ah
23b: 66 89 45 e4 mov %ax,-0x1c(%ebp)
23f: d9 6d e4 fldcw -0x1c(%ebp)
242: db 5d e0 fistpl -0x20(%ebp)
245: d9 6d e6 fldcw -0x1a(%ebp)
248: 8b 45 e0 mov -0x20(%ebp),%eax
24b: eb 05 jmp 252 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x252>
24d: b8 32 a9 ff ff mov $0xffffa932,%eax
252: 8b 55 08 mov 0x8(%ebp),%edx
255: 89 82 fc 1d 00 00 mov %eax,0x1dfc(%edx)if (center_position == -22222)
25b: 8b 45 08 mov 0x8(%ebp),%eax
25e: 8b 80 fc 1d 00 00 mov 0x1dfc(%eax),%eax
264: 3d 32 a9 ff ff cmp $0xffffa932,%eax
269: 75 67 jne 2d2 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x2d2>
{
FILE* myfp = fopen(“virt_line.csv”,”w”);
26b: c7 44 24 04 3c 00 00 movl $0x3c,0x4(%esp)
272: 00
273: c7 04 24 3e 00 00 00 movl $0x3e,(%esp)
27a: e8 fc ff ff ff call 27b <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x27b>
27f: 89 45 f0 mov %eax,-0x10(%ebp)// printf(“vritual_line”);
for(int i =0; i < apImageInfo->Width; i++)
282: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
289: eb 2c jmp 2b7 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x2b7>
{
fprintf(myfp, “%dn”,mVirtualLine);
28b: 8b 45 08 mov 0x8(%ebp),%eax
28e: 03 45 f4 add -0xc(%ebp),%eax
291: 05 e0 07 00 00 add $0x7e0,%eax
296: 0f b6 00 movzbl (%eax),%eax
299: 0f b6 c0 movzbl %al,%eax
29c: 89 44 24 08 mov %eax,0x8(%esp)
2a0: c7 44 24 04 4c 00 00 movl $0x4c,0x4(%esp)
2a7: 00
2a8: 8b 45 f0 mov -0x10(%ebp),%eax
2ab: 89 04 24 mov %eax,(%esp)
2ae: e8 fc ff ff ff call 2af <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x2af>
if (center_position == -22222)
{
FILE* myfp = fopen(“virt_line.csv”,”w”);// printf(“vritual_line”);
for(int i =0; i < apImageInfo->Width; i++)
2b3: 83 45 f4 01 addl $0x1,-0xc(%ebp)
2b7: 8b 45 0c mov 0xc(%ebp),%eax
2ba: 8b 40 10 mov 0x10(%eax),%eax
2bd: 3b 45 f4 cmp -0xc(%ebp),%eax
2c0: 0f 9f c0 setg %al
2c3: 84 c0 test %al,%al
2c5: 75 c4 jne 28b <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x28b>
{
fprintf(myfp, “%dn”,mVirtualLine);
}
fclose(myfp);
2c7: 8b 45 f0 mov -0x10(%ebp),%eax
2ca: 89 04 24 mov %eax,(%esp)
2cd: e8 fc ff ff ff call 2ce <_ZN11Application12WidthMonitor25CApplication_WidthMonitor12ProcessImageEPN6Camera10TImageInfoE+0x2ce>
case STEP7_CHECKCALIB:
//mpCalibration->ProcessImage(imagePtr);
break;
}
*/
}
2d2: 83 c4 44 add $0x44,%esp
2d5: 5b pop %ebx
2d6: 5d pop %ebp
2d7: c3 retJordanWParticipantHi ket,
Yes I’m building and debugging remotely on a different Linux machine.
GDBSession can’t find a function line, see the message:
info line int i = mPixel2MM.Initialise(((char *)CPixel2MMap::STR_INI_FILE.c_str()), ((char *)CPixel2MMap::STR_INI_SECTION.c_str()));
&”info line int i = mPixel2MM.Initialise(((char *)CPixel2MMap::STR_INI_FILE.c_str()), ((char *)CPixel2MMap::STR_INI_SECTION.c_str())); n”
&”Function “int i = mPixel2MM.Initialise(((char *)CPixel2MMap::STR_INI_FILE.c_str()), ((char *)CPixel2MMap::STR_INI_SECTION.c_str()));” not defined.n”
Function “int i = mPixel2MM.Initialise(((char *)CPixel2MMap::STR_INI_FILE.c_str()), ((char *)CPixel2MMap::STR_INI_SECTION.c_str()));” not defined.
-var-create: unable to create variable objectinfo sources shows the file of the source function :
&”info sourcesn”
Source files for which symbols have been read in:
/tmp/VisualGDB/Archos/Application/Src/Application.cpp, /tmp/VisualGDB/Archos/ArchosProject/, /tmp/VisualGDB/Archos/Application/Inc/Application.h, /tmp/VisualGDB/Archos/Camera/Inc/Camera.h, /tmp/VisualGDB/Archos/DataStores/Settings/Inc/SettingFile.h, /tmp/VisualGDB/Archos/DataStores/Settings/Inc/SettingGroup.h, /tmp/VisualGDB/Archos/DataStores/LiveValues/Inc/LiveValueGroup.h, /tmp/VisualGDB/Archos/DataStores/Commands/Inc/CommandGroup.h, /usr/include/c++/4.5.1/bits/vector.tcc, /tmp/VisualGDB/Archos/DataStores/LiveValues/Inc/LiveValueType.h, /usr/include/c++/4.5.1/bits/basic_string.tcc, /usr/include/c++/4.5.1/i686-redhat-linux/bits/atomic_word.h, /usr/include/locale.h, /usr/include/c++/4.5.1/bits/char_traits.h, /usr/include/c++/4.5.1/ext/numeric_traits.h, /usr/include/c++/4.5.1/bits/allocator.h, /usr/include/c++/4.5.1/debug/debug.h, /usr/include/c++/4.5.1/ext/new_allocator.h, /usr/include/c++/4.5.1/bits/cpp_type_traits.h, /usr/include/c++/4.5.1/bits/stringfwd.h, /usr/include/c++/4.5.1/bits/stl_vector.h, /usr/include/c++/4.5.1/bits/basic_string.h, /usr/include/c++/4.5.1/clocale, /usr/include/c++/4.5.1/cwchar, /usr/include/c++/4.5.1/cstddef, /tmp/VisualGDB/Archos/Camera/Inc/ImageInfo.h, /usr/lib/gcc/i686-redhat-linux/4.5.1/include/stdarg.h, /usr/include/wchar.h, /usr/include/stdio.h, /usr/include/libio.h, /usr/include/bits/pthreadtypes.h, /usr/include/time.h, /usr/include/bits/types.h, /usr/lib/gcc/i686-redhat-linux/4.5.1/include/stddef.h, /tmp/VisualGDB/Archos/DataStores/Commands/Inc/ICommandObserver.h, /tmp/VisualGDB/Archos/DataStores/Settings/Inc/ISettingGroupObserver.h, /tmp/VisualGDB/Archos/Application/Src/ApplicationFactory.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Inc/histogram.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/filterfactory.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/lowpassfilter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/filter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/cyclebuf.h, /tmp/VisualGDB/Archos/Lib/VmiErr/Inc/vmierr.h, /tmp/VisualGDB/Archos/Application/Inc/ApplicationFactory.h, /tmp/VisualGDB/Archos/Application/WidthMonitor/Inc/Application_WidthMonitor.h, /tmp/VisualGDB/Archos/Application/WidthMonitor/Src/Application_WidthMonitor.cpp, /usr/include/c++/4.5.1/ext/type_traits.h, /usr/include/c++/4.5.1/bits/stl_iterator_base_types.h, /tmp/VisualGDB/Archos/Lib/ImgProc/Inc/pixel2mmap.h, /tmp/VisualGDB/Archos/Lib/ImgProc/Inc/ImgProc.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/Polynomial.h, /usr/include/c++/4.5.1/bits/stl_algobase.h, /usr/include/c++/4.5.1/bits/stl_uninitialized.h, /usr/include/c++/4.5.1/bits/stl_iterator.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/stddev.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/mediaan.h, /usr/include/c++/4.5.1/bits/stl_construct.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/mediaanstd.h, /tmp/VisualGDB/Archos/Main/main.cpp, /tmp/VisualGDB/Archos/Motion/Inc/Motion.h, /tmp/VisualGDB/Archos/UserInterfaces/ConsoleUI/Inc/ConsoleUI.h
Source files for which symbols will be read in on demand:
/usr/include/c++/4.5.1/ext/new_allocator.h, /usr/include/c++/4.5.1/bits/allocator.h, /usr/include/c++/4.5.1/bits/stl_construct.h, /usr/include/c++/4.5.1/bits/stl_vector.h, /tmp/VisualGDB/Archos/UserInterfaces/ConsoleUI/Src/ConsoleUI.cpp, /tmp/VisualGDB/Archos/Motion/Src/MotionFactory.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Inc/ISettingGroupObserver.h, /tmp/VisualGDB/Archos/Motion/Src/Motion.cpp, /tmp/VisualGDB/Archos/Motion/Linmot/Src/Motion_Linmot.cpp, /tmp/VisualGDB/Archos/Lib/VmiErr/Src/vmierr.cpp, /tmp/VisualGDB/Archos/Lib/VmiErr/Src/datetimewrapper.cpp, /tmp/VisualGDB/Archos/Lib/Timer/Src/timer.cpp, /tmp/VisualGDB/Archos/Lib/Ini/Src/minIni.c, /tmp/VisualGDB/Archos/Lib/Ini/Src/libini.c, /usr/include/c++/4.5.1/bits/stl_algobase.h, /usr/include/c++/4.5.1/bits/stl_uninitialized.h, /usr/include/c++/4.5.1/bits/vector.tcc, /usr/include/c++/4.5.1/bits/stl_iterator.h, /tmp/VisualGDB/Archos/Lib/ImgProc/Src/pixel2mmap.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Inc/minmaxfilter.h, /usr/include/c++/4.5.1/bits/basic_string.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/cascadefilter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/averagefilter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/edgefilter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/lowpassfilter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/mediaan.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/cyclebuf.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/filter.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/filterfactory.h, /usr/include/c++/4.5.1/new, /tmp/VisualGDB/Archos/Lib/ImgProc/Src/LightBar.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Inc/weighedavg.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/pixelfilter.h, /tmp/VisualGDB/Archos/Lib/Filters/Src/weighedavg.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/Polynomial.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/pixelfilterfactory.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/pixelfilter.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Inc/mediaan_static.h, /tmp/VisualGDB/Archos/Lib/Filters/Src/mediaan_static.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Inc/mediaan5.h, /tmp/VisualGDB/Archos/Lib/Filters/Src/mediaan5.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/histogram2D.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/histogram.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/ClassPID.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Src/ClassLKK.cpp, /tmp/VisualGDB/Archos/Lib/Comm/Cell/Inc/VmiCellWrapper.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/Setting_UInt.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/Setting_String.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/Setting_Int.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/Setting_Float.cpp, /usr/include/c++/4.5.1/bits/char_traits.h, /tmp/VisualGDB/Archos/DataStores/Settings/Src/SettingGroup.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/SettingFile.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/SettingContainer.cpp, /tmp/VisualGDB/Archos/DataStores/Settings/Src/Setting.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValue_String.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValue_Long.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValue_Int.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValue_Hex.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValue_Char.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValueGroup.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValueContainer.cpp, /tmp/VisualGDB/Archos/DataStores/LiveValues/Src/LiveValue.cpp, /tmp/VisualGDB/Archos/DataStores/Commands/Src/CommandGroup.cpp, /tmp/VisualGDB/Archos/DataStores/Commands/Src/CommandContainer.cpp, /tmp/VisualGDB/Archos/DataStores/Commands/Src/Command.cpp, /tmp/VisualGDB/Archos/Camera/Src/CameraFactory.cpp, /tmp/VisualGDB/Archos/Camera/Src/Camera.cpp, /tmp/VisualGDB/Archos/Camera/NET/Src/Camera_NET.cpp, /tmp/VisualGDB/Archos/Lib/Filters/Inc/stddev.h, /tmp/VisualGDB/Archos/Lib/Filters/Inc/mediaanstd.h, /tmp/VisualGDB/Archos/DataStores/Commands/Inc/ICommandObserver.h
OKIt looks like the Application_Widtmonitor::Initialise() function can find the symbol to mPixel2MM.Initialise(); function:
Disassembly of section .text._ZN11Application12WidthMonitor25CApplication_WidthMonitor10InitializeEv:00000000 <_zn11application12widthmonitor25capplication_widthmonitor10initializeev>:
Implementation of Initialize
@todo implement
*/
#pragma endregion
bool CApplication_WidthMonitor::Initialize(void)
{
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 53 push %ebx
4: 83 ec 24 sub $0x24,%esp
// @TODO calibration
int i = mPixel2MM.Initialise(((char *)CPixel2MMap::STR_INI_FILE.c_str()), ((char *)CPixel2MMap::STR_INI_SECTION.c_str()));
7: c7 04 24 00 00 00 00 movl $0x0,(%esp)
e: e8 fc ff ff ff call f <_ZN11Application12WidthMonitor25CApplication_WidthMonitor10InitializeEv+0xf>
13: 89 c3 mov %eax,%ebx
15: c7 04 24 00 00 00 00 movl $0x0,(%esp)
1c: e8 fc ff ff ff call 1d <_ZN11Application12WidthMonitor25CApplication_WidthMonitor10InitializeEv+0x1d>
21: 8b 55 08 mov 0x8(%ebp),%edx
24: 81 c2 38 1c 00 00 add $0x1c38,%edx
2a: 89 5c 24 08 mov %ebx,0x8(%esp)
2e: 89 44 24 04 mov %eax,0x4(%esp)
32: 89 14 24 mov %edx,(%esp)
35: e8 fc ff ff ff call 36 <_ZN11Application12WidthMonitor25CApplication_WidthMonitor10InitializeEv+0x36>
3a: 89 45 f4 mov %eax,-0xc(%ebp)mCycleStep = STEP0_IDLE;
3d: 8b 45 08 mov 0x8(%ebp),%eax
40: c7 80 84 03 00 00 00 movl $0x0,0x384(%eax)
47: 00 00 00
//LightBar = new CLightBar();return false;
4a: b8 00 00 00 00 mov $0x0,%eax
}
4f: 83 c4 24 add $0x24,%esp
52: 5b pop %ebx
53: 5d pop %ebp
54: c3 retI don’t know where to find the problem, but it seems it cannot find the source of some funtions in a file and other function he can find in the same file. 😮
JordanWParticipantHi Ket,
Thanks for your fast reply. These files already have debug symbols. The following makefile options are set:
Makefile Debug symbols:
Lib::ImgProc::CLightBar::DetectEdgesFast(Camera::TImageInfo*) :
$(BINARYDIR)/LightBar.o : ../Lib/ImgProc/Src/LightBar.cpp $(all_make_files) |$(BINARYDIR)
$(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) Lib::ImgProc::CLightBar::DetectEdges(Camera::TImageInfo*) :
$(BINARYDIR)/LightBar.o : ../Lib/ImgProc/Src/LightBar.cpp $(all_make_files) |$(BINARYDIR)
$(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) Application::CApplication::ThreadMain() :
$(BINARYDIR)/Application.o : ../Application/Src/Application.cpp $(all_make_files) |$(BINARYDIR)
$(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) Application::CApplication::ThreadMain_Static(void*) :
$(BINARYDIR)/Application.o : ../Application/Src/Application.cpp $(all_make_files) |$(BINARYDIR)
$(CXX) $(CXXFLAGS) -c $< -o $@ -MD -MF $(@:.o=.dep) Flags are:
CFLAGS := -ggdb -ffunction-sections
DEBUG_CFLAGS := -O0
RELEASE_CFLAGS := -O3CXXFLAGS := $(CFLAGS) -ffunction-sections
DEBUG_CXXFLAGS := $(DEBUG_CFLAGS)
RELEASE_CXXFLAGS := $(RELEASE_CFLAGS) -
AuthorPosts